我希望能够使用枚举值创建新的通用类型。我相信这在C++模板中是可能的,但我不知道是否可以在C#中实现。
所以我想做的是:
我想我可以创建名为Gold、Silver的类来实现这一点,但是我很喜欢使用枚举来限制我的泛型类的类型。
我之所以想在现实世界中使用这样的功能是因为我正在创建一个事件聚合器(发布-订阅模型),并且我希望我的订阅者订阅特定类型T的消息。因此,我认为如果我的订阅者可以使用枚举进行订阅,那就太好了。
编辑:为了澄清,Metals.Gold只是一个示例枚举。我希望客户端库能够创建自己的枚举/类,并将其用于订阅。我不会自己定义枚举。
所以我想做的是:
public class MyClass <T>
{
public void Do<T>() {}
}
public enum Metals
{
Silver, Gold
}
我想传递一个枚举值,例如:
var myGoldClass = new MyClass<Metals.Gold>();
我想我可以创建名为Gold、Silver的类来实现这一点,但是我很喜欢使用枚举来限制我的泛型类的类型。
我之所以想在现实世界中使用这样的功能是因为我正在创建一个事件聚合器(发布-订阅模型),并且我希望我的订阅者订阅特定类型T的消息。因此,我认为如果我的订阅者可以使用枚举进行订阅,那就太好了。
编辑:为了澄清,Metals.Gold只是一个示例枚举。我希望客户端库能够创建自己的枚举/类,并将其用于订阅。我不会自己定义枚举。
public void Do<T>(T item) {}
,并且可以这样使用它:MyClass<Metals>();
和myGoldClass.Do(Metals.Gold)
。 - Ehsan Sajjad