interface IModel {}
class MyModel : IModel {}
interface IRepo<T>
where T: IModel { }
class Repo : IRepo<MyModel> { }
//EDIT: A smaller example
IRepo<IModel> repo = new Repo(); // Cannot implicitly convert.. An explicit convertion exists. Missing cast?
// Old example:
/*
The type 'Repo' cannot be used as type parameter 'C' in the generic type or method.
'Castle.MicroKernel.Registration.ComponentRegistration<S>.ImplementedBy<C>()'.
==> There is no implicit reference conversion from 'Repo' to 'IRepo<IModel>'.
*/
container.Register(
Component.For<IRepo<IModel>>()
.ImplementedBy<Repo>());
Но Repo происходит от IRepo, а MyModel получен из IModel. Почему это не работает?Производный тип не может быть неявно преобразован в базовый интерфейс
Я попытался добавить неявный оператор на Repo, но это не разрешено конвертировать между интерфейсами ..
ли это решается путем совместного/контру varience вещи из C# 4 (Нет, я не имею подскажите, о чем я говорю :))?
Спасибо. Угадайте, что пришло время подумать об обновлении до C# 4, затем .. – simendsjo