私は最初のWCFサービスを書いています。私はDatacontractsの仕組みを理解しようとしています。私はMSDN Articleを読んでいます。これは、データコントラクトを作成するためにカスタムタイプをマークアップする方法を説明していますが、私の例がうまくいかないことがあります。DataContractで何が問題になっていますか?
私はクライアントとサービスが知りたいので、私はこのタイプ(右?)それはこのようになりますについて私は共有ライブラリに配置したシンプルなDTOオブジェクトを持っている:これは
using System.Collections.Generic;
using System.Runtime.Serialization;
namespace org.healthwise.gatewayinterfaces.mocks
{
[DataContract]
public class MockCheckInDTO : ICheckInDTO
{
[DataMember]
private string _testPackageFilePath = "testpackages\\973eb455-6acc-486b-a1dd-2cf527872b1e.zip";
[DataMember]
private IDictionary<string, string> _testMetaData;
public MockCheckInDTO()
{
_testMetaData = MakeTestMetaDataDictionary();
}
private IDictionary<string, string> MakeTestMetaDataDictionary()
{
IDictionary<string, string> testMetaData = new Dictionary<string, string>();
testMetaData.Add("Version", "9.0.1");
testMetaData.Add("Product Family", "Learning Modules");
return testMetaData;
}
[DataMember]
public string PackageFileLocation
{
get { return _testPackageFilePath; }
set { _testPackageFilePath = value; }
}
[DataMember]
public IDictionary<string, string> PackageMetaData
{
get { return _testMetaData; }
set { _testMetaData = value; }
}
}
}
ServiceContract:
[ServiceContract]
public interface IIndexCheckIn
{
[OperationContract]
void AddToIndex(MockCheckInDTO mockCheckInDto);
}
私は私のサービスにこのMockCheckInDTOを介して送信しようとする小さなコンソールアプリケーションを作成しているが、それはそこに着くことはありません。私はMockCheckInDTOオブジェクトのシリアライズをしているようです。誰かが私を助けることができますか?
これは私が見ていた例外です:
System.Runtime.Serialization.SerializationException:タイプ 'org.healthwise.gatewayinterfaces.mocks.MockCheckInDTO' データコントラクト名「MockCheckInDTOとします。http://スキーマ.datacontract.org/2004/07/org.healthwise.gatewayinterfaces.mocks 'は期待されていません。 DataContractResolverの使用を検討したり、それは公共の性質上だけですので、プライベートフィールドから
[DataMember]
を削除してください既知のタイプ
「AddToIndex」をどのように呼び出しているかのコードを追加できますか? –