使用System.Reflection从DLL程序集中获取数据成员



我试图使用Assembly类从我的[ServiceContract]获得[DataMember]'s。问题是,我的方法返回一个空集合…

下面是我的代码:

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

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

小问题,但我个人认为你应该让这些属性,而不是字段(显然要使用GetProperties()):
[DataMember]
public string Test {get;set;}
[DataMember]
public long ComeAndGetMe {get;set;}
// etc

相关内容

  • 没有找到相关文章