如何确定参数是否附加了自定义属性?
我认为这个测试用例会通过:
[TestCase("")]
public void TestParameterAttribute([NotRequired]string theString)
{
var result = false;
foreach (var attribute in theString.GetType().GetCustomAttributes(true))
{
if (attribute.GetType() == (typeof(NotRequiredAttribute)))
{
result = true;
}
}
Assert.That(result, Is.True);
}
答案 0 :(得分:1)
这需要更多的工作。
[TestCase("")]
public void TestParameterAttribute([NotRequired]string theString)
{
var method = MethodInfo.GetCurrentMethod();
var parameter = method.GetParameters()[0];
var result = false;
foreach (var attribute in parameter.GetCustomAttributes(true))
{
if (attribute.GetType() == (typeof(NotRequiredAttribute)))
{
result = true;
}
}
Assert.That(result, Is.True);
}
答案 1 :(得分:1)
theString.GetType()
获得对代表Type
的{{1}}的引用。在其上调用string
将在GetCustomAttributes
类中查找这些属性。
您要做的是...获取当前方法中参数的属性。也许是这样的:
string
答案 2 :(得分:1)
您也可以使用GetCustomAttribute
方法的通用版本:
parameter.GetCustomAttribute<NotRequiredAttribute>() != null