是否可以仅使用接口来解析使用泛型的对象。
班级
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配置
<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.testObject1[JMJoinery.CMS.Data.CMSBasicTextData]' to type 'JMJoinery.ItestObject1JMJoinery.CMS.Data.ICMSBasicTextData'.“类型的对象的
”
使用
Container.Resolve<ItestObject<CMSBasicTextData>>();工作,但是否可以仅使用接口进行解析?
Container.Resolve<ItestObject<ICMSBasicTextData>>();而不是?
发布于 2012-03-28 15:48:37
接口及其实现
public interface ILookupDataReader<T>
{
string LookupTypeID { get; }
}
public class CountryDataReader: ILookupDataReader<ICountry>
{
string ILookupDataReader<ICountry>.LookupTypeID
{
get { return Enum.GetName(typeof(LookupTypeOptions), LookupTypeOptions.Country); }
}
}注册
<alias alias="ILookupDataReader" type="Co.Application.Shared.Core.BusinessObject.ILookupDataReader`1,Co.Shared.Impl"/>
<alias alias="ICountry" type="Co.Application.Shared.Core.BusinessObject.Lookup.ICountry, Co.Shared.Impl"/>
<register type="ILookupDataReader[ICountry]" mapTo="Co.Application.Shared.Core.BusinessObject.Lookup.CountryDataReader,Co.Shared.Impl">
<lifetime type="singleton"/>
</register>使用
[Dependency]
public ILookupDataReader<ICountry> CountryLookup { get; set; }https://stackoverflow.com/questions/9909122
复制相似问题