2

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()
    {
    }
}

Testと を取得したいComeAndGetMe

4

1 に答える 1

4

とマークされているフィールドがない[DataContractFormat]ため、<DataContractFormatAttribute>検索しても何も見つかりません。DataMemberAttributeが指定されているフィールドを探してみてください。

細かい点ですが、個人的には、フィールドではなくこれらのプロパティを作成する必要があると思います(明らかに使用します):GetProperties()

[DataMember]
public string Test {get;set;}
[DataMember]
public long ComeAndGetMe {get;set;}
// etc
于 2013-05-14T13:13:37.330 に答える