[英]C# Attribute Limit
是否可以限制在特定类中应用属性的属性数量?
在编译时没有。
在运行时,您可以通过静态初始化程序对此进行验证,该静态初始化程序将在违反此不变式的情况下抛出该异常,尽管这将被认为是非常糟糕的样式,但在不保留不变式的情况下不会执行任何代码的意义上,这是安全的。
如果您考虑.Net固有的可扩展性,即使可以在编译时进行验证,也可以想象:
用编译dll A
public class Foo
{
public int Property1 {get;}
}
编译使用类引用A.dll的dll B
public class Bar
{
[OnlyOneAllowedOnAnyPropertiesPerClass]
public int Property2 {get;}
}
然后您重新编译A.dll与
public class Foo
{
[OnlyOneAllowedOnAnyPropertiesPerClass]
public int Property1 {get;}
}
并尝试使用旧的B.dll运行此新的A.dll(它们在所有其他方面都是二进制兼容的,所以很好)
显然,运行时必须对此进行大量检查,更不用说B可能在一段时间内不会突然加载,从而使A和B中的一个或两个都“非法”。
因此,您不应期望它在框架中可用。
我认为在编译时不可能。 但是您可以向实例构造函数或静态构造函数中添加一些代码,以在运行时通过反射对其进行检查。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.