C# 4.0 .NET 4.5 Silverlight 5 It seems weird that I cant find the solution so need some help please.
I have base class Base and derived class Child : Base. I have also helper class which has generic type to do specific work one EF entities Helper where T : EntityObject.
Child does specific work with a specific entity MyEntity : EntityObject.
So I tried:
public class Base
{
protected Helper<EntityObject> helper;
}
public class Child : Base
{
public Child()
{
helper = new Helper<MyEntity>();
}
}
I would expect that more derived class must know about more specific generic parameter and I think that's what covariance for... But that doesn't work...
What's the 'correct' way to design class like that?
EDIT: sorry I didn't make it 100% clear why cant I achieve what I need.
a. Solution with generic Base doesn't work because user of the Base doesn't know the T type. Imagine:
public class User
{
private Base<T> base; // this will not compile.
public User(TypeEnum t)
{
if(t == TypeEnum.MyEntity) base = new Child();
...
b. Solution with Interface doesn't work because helper uses T everywhere (it is its purpose right?). Imagine it has method
public IEnumerable<T> Process(IEnumerable<T> items) { return items; }
How do I bring it up in the interface which doesn't know anything about T