我遇到了问题-这是我的班级结构
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
了 Mapper 及其类型暗示了“IModel”,为什么它不能初始化映射器。
有没有另一种方法来构建它以实现我所需要的?
太感谢了
请注意,人们提出的解决方案给了我其他编译错误,因为映射接口具有以下成员
T GetModel(busO bBusinessObject);
busO SetBusObject(T source, busO target);
显然,当它在“out”处声明时,您不能将泛型类型作为输入参数