私は以下のようなコードをいくつか持っています。基本的には、Webサービスからデータを取得し、それをクライアントサイドオブジェクトに変換することを表します。AutoMapperを具体的な型にマップするように設定しますが、クラスを定義するためのインタフェースを許可します
void Main()
{
Mapper.CreateMap<SomethingFromWebService, Something>();
Mapper.CreateMap<HasSomethingFromWebService, HasSomething>();
// Service side
var hasSomethingFromWeb = new HasSomethingFromWebService();
hasSomethingFromWeb.Something = new SomethingFromWebService
{ Name = "Whilly B. Goode" };
// Client Side
HasSomething hasSomething=Mapper.Map<HasSomething>(hasSomethingFromWeb);
}
// Client side objects
public interface ISomething
{
string Name {get; set;}
}
public class Something : ISomething
{
public string Name {get; set;}
}
public class HasSomething
{
public ISomething Something {get; set;}
}
// Server side objects
public class SomethingFromWebService
{
public string Name {get; set;}
}
public class HasSomethingFromWebService
{
public SomethingFromWebService Something {get; set;}
}
私が持っている問題は、私は私のクラス(この場合はHasSomething.ISomething)のインターフェイスを使用したいということですが、私は、具体的な種類にAutoMapperマップを持っている必要があります。 (。。私はコンクリートの型にマッピングされない場合は、AutoMapperは私のためのプロキシを作成します私のアプリでは他の問題を引き起こすこと)
上記のコードでは、私は、このエラーを与える:
Missing type map configuration or unsupported mapping.
Mapping types: SomethingFromWebService -> ISomething
UserQuery+SomethingFromWebService -> UserQuery+ISomething
だから私の質問具体的な型にマップするにはどうしたらいいですか?
注:私は、このマッピングを追加してみました:
Mapper.CreateMap<SomethingFromWebService, ISomething>();
しかし、その後、返されたオブジェクトは、それがテンプレートとしてISomethingを使用して生成されたプロキシを返すタイプSomething
ではありません。
これはありがとう、これは私を助けてくれました。私が間違っていない限り、2番目のマッピングだけが必要です。私は第二のマッピングが最初の冗長化を行わなければならないと思いますか? –
いいえ、まだ具体的なタイプの最初のマッピングが必要です。そうしないと、AutoMapperはSomethingFromWebServiceからSomethingFromWebServiceへのマッピング方法を知らないでしょう。 – TheWho
ありがとうございます!私は今2時間苦労しており、それは私の問題を解決します! – Speuline