ive chạy vào một vấn đề - đây là cấu trúc lớp học của tôiLàm thế nào để khởi tạo một giao diện mà có kiểu aguments của các loại khác Interface
public interface IModel{}
public interface IGenericMapper<T> where T : IModel {...}
public class ActualModel:IModel {...}
public class ActualMapper: IGenericMapper<ActualModel> {...}
mã thực tế của tôi để initialse mapper là:
IGenericMapper<IModel> mapper;
mapper= new ActualMapper();
Nó không biên dịch. Tôi gặp lỗi
Không thể chuyển đổi hoàn toàn loại 'ActualMapper' sang 'IGenericMapper'. Một chuyển đổi rõ ràng tồn tại (là bạn thiếu một dàn diễn viên?)
Khi tôi đúc nó bằng cách sử
mapper= new ActualMapper() as IGenericMapper<IModel>;
mapper không được khởi tạo đúng cách (nó trở lại như NULL)
Tôi đang thiếu gì - kể từ khi ActualMapper()
thực hiện IGeneric
Trình ánh xạ và loại impller của nó `IModel 'tại sao nó không thể khởi chạy trình ánh xạ.
Có cách nào khác để cấu trúc điều này để đạt được những gì tôi cần không?
Cảm ơn bạn rất nhiều
Lưu ý các giải pháp người đã đề xuất mang lại cho tôi lỗi biên dịch khác như giao diện bản đồ có các thành viên sau
T GetModel(busO bBusinessObject);
busO SetBusObject(T source, busO target);
rõ ràng bạn không thể có các loại generic như một tham số đầu vào khi của nó tuyên bố tại "out"
bạn có thể thêm định nghĩa của ILFFMapper <> không? – LunicLynx
'var ILFFMapper 'đó là một lỗi cú pháp, loại bỏ' var' từ khóa –
Tommi
Bạn cần một loại covarient. thử IGenericMapper < out T> –