我想用自定义属性编写枚举,例如:
public enum SomeEnum: long
{
[SomeAttribute<MyClass1>]
Sms = 1,
[SomeAttribute<MyClass2>]
Email = 2
}
但是属性不支持泛型。好吧,最相似的解决方案是:
public enum SomeEnum: long
{
[SomeAttribute(typeof(MyClass1))]
Sms = 1,
[SomeAttribute(typeof(MyClass2))]
Email = 2
}
这里是问题:我希望
Class1
从ICustomInterface
继承,因此使用泛型,我可以编写约束:[AttributeUsage(AttributeTargets.All)]
class SomeAttribute<T> : Attribute where T: ICustomInterface
{
}
但是属性不支持泛型。
所以最后一个问题是:如何检查类型正在实现某些接口(interface)的编译时(如
T
约束)? 最佳答案
对您的最后一个问题非常简单:
你不能这样做。
但是您可以在运行时使用一些反射方法来检查它,例如:
Type.IsAssignableFrom