从Dll中提取其他方法Info

时间:2012-04-27 06:18:26

标签: c# dll

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

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

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

提供dll名称& serach标准(优先级,所有者,ID和标题),我可以获得给定优先级组或所有者组等的方法名称。

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

有人可以建议怎么做。

2 个答案:

答案 0 :(得分: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 具有 KeyValue属性。)

要检测属性的状态(您可能需要TestMethodAttribute),可以使用MemberInfo.IsDefined

答案 1 :(得分:0)

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