2

在我的解决方案中,我有 dll,其中包含以下格式的方法

    [TestMethod]
    [TestProperty("Priority", "P0")]
    [TestProperty("Owner", "vbnmg")]
    [TestProperty("Title", "Verify the log accessible")]
    [TestProperty("ID", "1")]
    public void LogAccesiblityTest()
    {
    //Test Code
    }

某些方法具有不同的优先级、所有者、ID 和标题

通过提供 dll 名称和搜索条件(优先级、所有者、ID 和标题),我可以获得给定优先级分组或所有者组等中的方法名称吗?

我有代码,通过它我可以获取使用的方法名称和参数的详细信息,但我没有得到如何从测试属性获取信息。

有人可以建议如何做到这一点。

4

2 回答 2

1

听起来你只是在寻找MethodInfo.GetCustomAttributes. 鉴于你的格式,我可能会写这样的东西:

public static Dictionary<string, string> GetProperties(MethodInfo method)
{
    return method.GetCustomAttributes(typeof(TestPropertyAttribute), false)
                 .Cast<TestProperty>()
                 .ToDictionary(x => x.Key, x => x.Value);
}

(这是假设TestPropertyAttribute has KeyValueproperties,当然。)

要仅检测属性的存在(您可能想要 TestMethodAttribute),您可以使用MemberInfo.IsDefined.

于 2012-04-27T06:21:40.010 回答
0

假设您已经拥有MethodInfo对象(因为您说您已经拥有获取信息的代码),您可以调用MethodInfo.GetCustomAttributes以获取这些属性。它还有一个重载,您可以在其中传递您要查找的属性的类型。然后,您只需要转换结果并检查它们的属性。

于 2012-04-27T06:21:47.220 回答