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 h
I think this is what you're after:
public class Base<T> where T : EntityObject
{
protected Helper<T> helper;
}
public class Child : Base<MyEntity>
{
public Child()
{
helper = new Helper<MyEntity>();
}
}
Edit (in response to your edit): You can add a Base
, use like so:
public class Base
{
// put anything here that doesn't rely on the type of T
// if you need things here that would rely on T, use EntityObject and have
// your subclasses provide new implementations using the more specific type
}
public class Base<T> : Base where T : EntityObject
{
protected Helper<T> helper;
}
public class Child : Base<MyEntity>
{
public Child()
{
helper = new Helper<MyEntity>();
}
}
public class User
{
private Base myBase;
public User(TypeEnum t)
{
if(t == TypeEnum.MyEntity) myBase = new Child();
...
If Foo
: Bar
, that doesn't mean that Some<Foo>
: Some<Bar>
. There are two ways of doing what you want. The first is to make the base-type generic such that:
Base<T> where T : EntityObject {
protected Helper<T> helper;
}
Child : Base<MyEntity> {...}
The second is to use a non-generic interface at the base-type, i.e. have
Base {
protected IHelper helper;
}
Child : Base {...}
where in the latter case, Helper<T> : IHelper
, for some non-generic IHelper
to-be-defined.
As a side-note, you might find it easier to pass the value down in the constructor rather than using a protected
field.