У меня есть 3 класса: A, B, и C
Все эти классы реализуют интерфейс IMyInterface
Я хотел бы, чтобы интерфейс был определен как так:
internal IMyInterface<E> where E: class
{
E returnData();
}
Так, чтобы это могло возвратить данные типа E. Тип "E" будет ПОСТЕПЕННО объект, созданный с Платформой Объекта v4.
В отдельном классе я имею:
public class MyClass()
{
IMyInterface<??> businessLogic;
public setBusinessLogic(IMyInterface<E> myObject)
where E : class
{
businessLogic = myObject;
}
}
Я пытался поместить <object>
вместо <??>
но это не могло бросить мой постепенно тип объекта.
Я пытался иметь свою реализацию объектов пустой интерфейс IEntity
затем использование
IMyInterface<IEntity> businessLogic;
...
businessLogic = new A<POCOObject>();
результаты в:
Cannot implicitly convert type
'A<POCOObject>' to
'IMyInterface<IEntity>'. An explicit
conversion exists (are you missing a
cast?)
Какие-либо рекомендации?
Править: Я попытался объявить свой A, B, и классы C как:
internal class A : IBidManager<EntityObjectType>
и
internal class A<E> : IBidManager<E> where E : class
результаты по той же ошибке.
Это должно быть либо
public class MyClass<E> where E : IEntity, class
{
IMyInterface<E> businessLogic;
public setBusinessLogic(IMyInterface<E> myObject)
{
businessLogic = myObject;
}
}
, либо
public class MyClass
{
IMyInterface<POCOObject> businessLogic;
public setBusinessLogic(IMyInterface<POCOObject> myObject)
{
businessLogic = myObject;
}
}
. Если ваш бизнес-объект должен обрабатывать любой объект POCO, и каждый из них имеет интерфейс, вам нужно будет указать , где E: class, IEntity
на уровне класса. В противном случае вы должны использовать конкретный тип для общего аргумента