возможно ли разрешать объекты, которые используют дженерики в единстве, только с помощью интерфейсов.
class
public interface ItestObject<T>{ T Create();}
public class testObject<T> : ItestObject<T> where T: class, ICMSBasicTextData, new()
{
public testObject(){}
public T Create()
{
return new T();
}
}
xml config
<alias alias="testObject_I" type="JMJoinery.ItestObject`1, JMJoinery" />
<alias alias="testObject_C" type="JMJoinery.testObject`1[[JMJoinery.CMS.Data.CMSBasicTextData, JMJoinery]], JMJoinery" />
<alias alias="CMSBasicTextData_I" type="JMJoinery.CMS.Data.ICMSBasicTextData, JMJoinery" />
<alias alias="CMSBasicTextData_C" type="JMJoinery.CMS.Data.CMSBasicTextData, JMJoinery" />
<register name="CMSBasicTextData_R" type="CMSBasicTextData_I" mapTo="CMSBasicTextData_C" />
<register name="test" type="testObject_I" mapTo="testObject_C" />
, когда я пытаюсь разрешить:
var o2 = JMJoinery.Global.Container.Resolve<ItestObject<ICMSBasicTextData>>();
возникает эта ошибка:
"Невозможно привести объект типа 'JMJoinery.testObject 1[JMJoinery.CMS.Data.CMSBasicTextData]' to type 'JMJoinery.ItestObject
1 [JMJoinery.CMS.Data.ICMSBasicTextData]'."
Использование
Container.Resolve<ItestObject<CMSBasicTextData>>();
работает, но можно ли разрешить, используя только интерфейс
Container.Resolve<ItestObject<ICMSBasicTextData>>();
вместо?