gpt4 book ai didi

c# - 属性中的类型约束

转载 作者:太空狗 更新时间:2023-10-29 21:27:30 26 4
gpt4 key购买 nike

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

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 约束)该类型正在实现某个接口(interface)?

最佳答案

你的最后一个问题很简单:

so finally question is: how can I check in compile time (like T constraints) that type is implementing some interface?

你不能那样做。

但是你可以在运行时检查它,使用一些反射方法,比如: Type.IsAssignableFrom

关于c# - 属性中的类型约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26521670/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com