2015-02-19 2 views
-8

У меня есть метод в Common классе проекта я работаю, на котором определяется следующим образом:Подписи метода C# - ограничивающие типы - какая правильная терминология?

public static void PopulateSoapBody<TEnum>(Object obj, string[] aMessage) where TEnum : struct, IComparable, IFormattable, IConvertible 

и называется, как это (от нескольких различных классов, определяющих свои собственные перечисляемые типы, и населяющие их собственные классы мыло для тела):

DCSSCardUpdateType wsSoapBody = new DCSSCardUpdateType(); 
Common.PopulateSoapBody<CardPinRequest>(wsSoapBody, aMessage); 

где

CardPINRequest является тип Enum, определенный в классе вызывающей

wsSoapBody является тип класса определен в веб-службе

aMessage является массив строк (используется для заполнения wsSoapBody)

Что называется, когда тип enum передается таким образом методу, ограничивая возможные типы (я хотел бы прочитать на нем, чтобы лучше понять, как использовать особенности d нравится)

+0

что вы подразумеваете под этим типом общих методов **? – dotctor

+3

Что именно называется * what *? Обратите внимание, что это действительно сделает ваш код более легким для чтения, если вы будете следовать нормальным соглашениям об именах .NET, например. 'PopulateSoapBody' и' CardPinRequest'. –

+2

Это называется «универсальным методом» с параметром ограниченного типа. – dasblinkenlight

ответ

5

I думаю срок, который вы ищете, является generic type constraints.

Из связанных статей MSDN:

При определении обобщенного класса, вы можете применять ограничения на виды типов, клиентский код может использовать для аргументов типа, когда он конкретизирует свой класс. Если код клиента пытается создать экземпляр вашего класса, используя тип, который не допускается ограничением, результатом является ошибка времени компиляции. Эти ограничения называются ограничениями.

 Смежные вопросы

  • Нет связанных вопросов^_^