我不确定为什么以下方法总是返回false
// method to check for presence of TestCaseAttribute
private static bool hasTestCaseAttribute(MemberInfo m)
{
foreach (object att in m.GetCustomAttributes(true))
{
Console.WriteLine(att.ToString());
if (att is TestCase.TestCaseAttribute) // also tried if (att is TestCaseAttribute)
{
return true;
}
}
return false;
}
即使控制台输出如下所示:
TestCase.DateAttribute
TestCase.AuthorAttribute
TestCase.TestCaseAttribute
我在这里缺少什么?
编辑;这种方法似乎有效......
private static bool hasTestCaseAttribute(MemberInfo m)
{
if (m.GetCustomAttributes(typeof(TestCaseAttribute), true).Any())
{
return true;
}
else
{
return false;
}
}
答案 0 :(得分:4)
这应该可以解决问题。
private static bool hasTestCaseAttribute(MemberInfo m)
{
return m.GetCustomAttributes(typeof(TestCaseAttribute), true).Any();
}
答案 1 :(得分:2)
public static bool HasCustomAttribute(MethodInfo methodInfo, bool inherit = false)
{
return methodInfo.GetCustomAttribute<CustomAttribute>(inherit) != null;
}
您可以使用上面的功能,它比您当前的方法更简洁。 sa_ddam的片段也有效。
答案 2 :(得分:0)
你可以试试这个:
private static bool hasTestCaseAttribute(MethodInfo method)
{
object[] customAttributes = Attribute.GetCustomAttribute(method,
typeof(TestCase), true) as TestCase;
if(customAttributes.Length>0 && customAttributes[0]!=null)
{
return true;
}
else
{
return false;
}
}