属性中的类型约束

亚历克斯·朱可夫斯基(Alex Zhukovskiy)

我想用自定义属性编写枚举,例如:

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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章