我有一个属性,让我们称之为 SomeAttribute 和一个类,我需要确保该类传递了一个具有 SomeAttribute 的类型。所以我现在就是这样做的:
public class Test()
{
public Test(SomeType obj)
{
if(!obj.GetType().IsDefined(typeof(SomeAttribute), false))
{
throw new ArgumentException("Errormessage");
}
}
}
但这意味着如果 obj 没有该属性,我在编译时不会收到任何错误,但在运行时某处会出现错误。有没有办法在方法声明中指定参数必须具有某些属性?所以我在使用错误参数时编译时会出错,还是必须使用空接口(interface)?
最佳答案
无法在编译时强制执行属性。您可能需要重新考虑您的设计——通常属性更多地是关于元数据,而不是关于运行时行为。
NDepend's Code Query Language是一种静态分析工具,可能 可以检测违规行为 - 但如果您还没有使用 NDepend,我会犹豫是否单独将其包含在这个要求中。
再一次,缺乏你想做的事情的背景 - 这有点像 solving the other half your problem .
关于C#:确保参数具有属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2845287/