使用System.Reflection从DLL程序集中获取DataMembers

时间:2013-05-14 13:10:35

标签: c# reflection dll system.reflection

我正在尝试使用Assembly课程从[DataMember]'s获取[ServiceContract]。问题是,我的方法返回一个空集合......

这是我的代码:

Assembly assembly = Assembly.LoadFrom(dllPath);
Type c = assembly.GetType(fullName);
var dataMembers = c.GetFields().Where(f => f.GetCustomAttributes<DataContractFormatAttribute>().Any());

这是我的服务类:

[ServiceContract]
public class MyService
{
    [DataMember]
    public string Test;

    [DataMember]
    public Int64 ComeAndGetMe;

    public bool AmIUseless;

    [OperationContract]
    public void DoSomething()
    {
    }
}

我想获得TestComeAndGetMe

1 个答案:

答案 0 :(得分:4)

没有字段标记为[DataContractFormat],因此查找<DataContractFormatAttribute>将找不到任何内容。尝试查找指定DataMemberAttribute的字段。

小点,但我个人认为你应该制作那些属性,而不是字段(显然使用GetProperties()):

[DataMember]
public string Test {get;set;}
[DataMember]
public long ComeAndGetMe {get;set;}
// etc