問題が発生しました - これらは私のクラス構造です
public interface IModel{}
public interface IGenericMapper<T> where T : IModel {...}
public class ActualModel:IModel {...}
public class ActualMapper: IGenericMapper<ActualModel> {...}
マッパーを初期化するための私の実際のコードは次のとおりです。
IGenericMapper<IModel> mapper;
mapper= new ActualMapper();
コンパイルされません。エラーが発生します
タイプ 'ActualMapper' を 'IGenericMapper' に暗黙的に変換することはできません。明示的な変換が存在します (キャストがありませんか?)
を使用してキャストするとき
mapper= new ActualMapper() as IGenericMapper<IModel>;
マッパーが適切に初期化されない (NULL として返される)
私が欠けているもの -マッパーをActualMapper()
実装IGeneric
し、その型が「IModel」を実装しているため、マッパーを初期化できないのはなぜですか。
これを構造化して必要なものを達成する別の方法はありますか?
どうもありがとう
マッピングインターフェイスには次のメンバーがあるため、人々が提案したソリューションでは他のコンパイルエラーが発生することに注意してください
T GetModel(busO bBusinessObject);
busO SetBusObject(T source, busO target);
「out」で宣言されている場合、ジェネリック型を入力パラメーターとして使用できないようです