首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >统一Resolve<Interface1<Interface2>>问题

统一Resolve<Interface1<Interface2>>问题
EN

Stack Overflow用户
提问于 2012-03-28 14:01:14
回答 1查看 168关注 0票数 2

是否可以仅使用接口来解析使用泛型的对象。

班级

代码语言:javascript
复制
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配置

代码语言:javascript
复制
<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" />

当我试图解决:

代码语言:javascript
复制
var o2 = JMJoinery.Global.Container.Resolve<ItestObject<ICMSBasicTextData>>();

此错误发生:

无法转换'JMJoinery.testObject1[JMJoinery.CMS.Data.CMSBasicTextData]' to type 'JMJoinery.ItestObject1JMJoinery.CMS.Data.ICMSBasicTextData'.“类型的对象的

使用

代码语言:javascript
复制
Container.Resolve<ItestObject<CMSBasicTextData>>();

工作,但是否可以仅使用接口进行解析?

代码语言:javascript
复制
Container.Resolve<ItestObject<ICMSBasicTextData>>();

而不是?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-03-28 15:48:37

接口及其实现

代码语言:javascript
复制
public interface ILookupDataReader<T>
{

    string LookupTypeID { get; }


}


public class CountryDataReader: ILookupDataReader<ICountry>
{


    string ILookupDataReader<ICountry>.LookupTypeID
    {
        get { return Enum.GetName(typeof(LookupTypeOptions), LookupTypeOptions.Country); }
    }
}

注册

代码语言:javascript
复制
<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>

使用

代码语言:javascript
复制
[Dependency]
public ILookupDataReader<ICountry> CountryLookup { get; set; }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9909122

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档