我想用自定义属性编写枚举,例如:
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
{
}
但是属性不支持泛型。
所以最后一个问题是:如何检查T
类型正在实现某些接口的编译时(如约束)?
最后一个问题很简单:
所以最后一个问题是:如何检查类型正在实现某些接口的编译时(如T约束)?
你不能这样做。
但是您可以在运行时使用一些反射方法来检查它,例如:Type.IsAssignableFrom
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句