香港專業教育學院碰到一個問題的類型aguments接口 - 這是我的階級結構如何初始化的類型是另一個接口
public interface IModel{}
public interface IGenericMapper<T> where T : IModel {...}
public class ActualModel:IModel {...}
public class ActualMapper: IGenericMapper<ActualModel> {...}
我實際的代碼來initialse映射器是:
IGenericMapper<IModel> mapper;
mapper= new ActualMapper();
它不編譯。我得到的錯誤
無法隱式轉換類型「ActualMapper」到「IGenericMapper」。 的顯式轉換存在(是否缺少強制轉換?)
當我使用
mapper= new ActualMapper() as IGenericMapper<IModel>;
映射器沒有得到正確初始化投(它回來爲NULL)
我錯過了什麼 - 因爲ActualMapper()
implements IGeneric
映射器和它的類型impliments`IModel'爲什麼不能初始化映射器。
有沒有另外一種方法來構造這個以達到我所需要的?
謝謝你這麼多
注人提出的解決方案給了我其他的編譯錯誤映射接口具有以下成員
T GetModel(busO bBusinessObject);
busO SetBusObject(T source, busO target);
顯然你不能有泛型類型作爲輸入參數時其在 「走出去」
你可以添加ILFFMapper <>的定義嗎? – LunicLynx
'var ILFFMapper'這是一個語法錯誤,刪除'var'關鍵字 –
Tommi
您需要一個協變類型。嘗試IGenericMapper < out T> –