2012-06-24 3 views
0

Я хотел сделать что-то вроде этого:Generic T в параметре метода в C#

public static List<string> ItemsOfEnum(T typeT) 
{ 
    List<string> items = new List<string>(); 
    foreach (typeT tItem in Enum.GetValues(typeof(typeT))) 
     items.Add(tItem); 
    return items; 
} 

Как получить «T» в списке параметров без изменения типа возврата (List)?

+5

Эмм, не уверен, что вы просите. Не могли бы вы уточнить свой вопрос? –

+0

Вы можете использовать 'Enum.GetNames' для получения' string [] '. Не уверен, что это то, что вы хотите. – Oded

+4

Есть 3 ответа, но я до сих пор не знаю, что вопрос был :) – alexm

ответ

6

Кажется легким ... но, возможно, это то, что вы искали?

public static List<string> ItemsOfEnum<typeT>() 
     where typeT: struct, IComparable, IFormattable, IConvertible { 
    List<string> items = new List<string>(); 
    foreach (typeT tItem in Enum.GetValues(typeof(typeT))) 
     items.Add(tItem.ToString()); 
    return items; 
} 

Обратите внимание, что C# не позволяют ограничивать к перечислениям, так что эти ограничения являются более или менее Замкнутыми вы можете получить.

+0

Спасибо @ Lucero. В этом-то и дело. Я пробовал что-то вроде «code'List « code », но это изменило тип возвращаемого значения. Еще раз спасибо! – netblognet

+0

Добро пожаловать. Если вы только после имен перечислений, хотя можете захотеть напрямую использовать 'Enum.GetNames' (как и предложил Одед). – Lucero

0
public static List<string> itemsofenum<typet>() 
    { ... } 
+1

Это не скомпилируется. – Oded

+0

Он будет, если typet является переменной типа, чтобы он мог вызвать typeof на нем. –

+2

C# чувствителен к регистру. 'Public' и' list 'неверны. – Oded

1

Я думаю, вы перепутали Синтаксис. Я предполагаю, что вы хотите что-то вроде этого:

public static List<string> ItemsOfEnum<T>(T inputList) {...} 

В вашем для каждого оператора вы должны обменять typeT с T. Может быть, для вашего внутреннего списка необходимо вызвать функцию ToString, чтобы получить строку.

+0

Спасибо. Это сработало. – netblognet

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