給定一個枚舉這樣的:如何使用泛型創建從枚舉中創建IEnumerable的方法?
public enum City {
London = 1,
Liverpool = 20,
Leeds = 25
}
public enum House {
OneFloor = 1,
TwoFloors = 2
}
我使用下面的代碼給我一個IEnumerable:
City[] values = (City[])Enum.GetValues(typeof(City));
var valuesWithNames = from value in values
select new { value = (int)value, name = value.ToString() };
代碼工作很好,但是我必須爲相當多的做到這一點枚舉。有沒有一種方法可以創建一個通用的方式來做到這一點?
問題是,C#不允許枚舉約束泛型類型。您可以使用Jon Skeet的[不受約束的旋律](http://code.google.com/p/unconstrained-melody/)。 – Adam
如果您僅在運行時需要'IEnumerable',則可以使用反射。否則,您可能會考慮使用[模板](http://msdn.microsoft.com/zh-cn/library/bb126445.aspx)和反射。 – Guillaume