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

C# 使用System.Reflection从DLL程序集获取数据成员,c#,reflection,dll,system.reflection,C#,Reflection,Dll,System.reflection,我正试图使用汇编类从我的[ServiceContract]中获取[DataMember]。问题是,我的方法返回一个空集合 这是我的密码: Assembly assembly = Assembly.LoadFrom(dllPath); Type c = assembly.GetType(fullName); var dataMembers = c.GetFields().Where(f => f.GetCustomAttributes<DataContractFormatAttribu

我正试图使用汇编类从我的[ServiceContract]中获取[DataMember]。问题是,我的方法返回一个空集合

这是我的密码:

Assembly assembly = Assembly.LoadFrom(dllPath);
Type c = assembly.GetType(fullName);
var dataMembers = c.GetFields().Where(f => f.GetCustomAttributes<DataContractFormatAttribute>().Any());
我想获取Test和ComeAndGetMe。

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

次要的一点,但我个人认为您应该创建这些属性,而不是字段并使用GetProperties,显然:

[DataMember]
public string Test {get;set;}
[DataMember]
public long ComeAndGetMe {get;set;}
// etc
没有字段标记为[DataContractFormat],因此查找将找不到任何内容。尝试查找指定了DataMemberAttribute的字段

次要的一点,但我个人认为您应该创建这些属性,而不是字段并使用GetProperties,显然:

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

但是没有像DataMemberAttribute这样的东西。VS2012显示了这一点red@Nickon然后,您可能缺少对System.Runtime.Serialization.dll的程序集引用,或对System.Runtime.Serialization的using指令-但是,由于[DataMember]是DataMemberAttribute,我想我们可以说它存在!仍然与DataMemberAttribute:/@Nickon不同。MSDN甚至会告诉您需要引用的程序集它是一个引用,但它现在正在工作。我不得不重新启动VS:非常感谢!但是没有像DataMemberAttribute这样的东西。VS2012显示了这一点red@Nickon然后,您可能缺少对System.Runtime.Serialization.dll的程序集引用,或对System.Runtime.Serialization的using指令-但是,由于[DataMember]是DataMemberAttribute,我想我们可以说它存在!仍然与DataMemberAttribute:/@Nickon不同。MSDN甚至会告诉您需要引用的程序集它是一个引用,但它现在正在工作。我不得不重新启动VS:非常感谢!