Castle IOC 针对泛型接口的配置文件的写法

场景一:接口和实现都是泛型。

 

//
//   类库
//
public   interface  IRepository < TBusinessModel >
        
where  TBusinessModel : IBusinessModel
{
}
public   class  NHRepository < TBusinessModel >  : IRepository < TBusinessModel >
    
where  TBusinessModel : IBusinessModel
{
}

//
//  Client
//
Castle.Windsor.IWindsorContainer container  =   new  Castle.Windsor.WindsorContainer( " 配置文件.xml " );
IRepository
< User >  r  =  (IRepository < User > )container[ typeof (IRepository < User > )];

//
//  在别的类里面作为Field
//
public   class  UserRespository :  
{
    
private  IRepository < User >  _userRep;

    
public  UserRespository(IRepository < User >  userRep)
    {
        _userRep 
=  userRep;
    }
}

< component
    id
= " 随便 "
    service
= " 完整的命名空间.IRepository`1, 程序集名称 "  
    type
= " 完整的命名空间.NHRepository`1, 程序集名称 "   />


配置文件:

< component
    
id ="随便"
    service
="完整的命名空间.IRepository`1, 程序集名称"  
    type
="完整的命名空间.NHRepository`1, 程序集名称"   />


场景二:接口是泛型,实现不是泛型

//
//   类库
//
public   interface  IRepository < TBusinessModel >
        
where  TBusinessModel : IBusinessModel
{
}
public   class  UserRespository : IRepository < User >
{
}

//
//  Client
//
Castle.Windsor.IWindsorContainer container  =   new  Castle.Windsor.WindsorContainer( " 配置文件.xml " );
IRepository
< User >  r  =  (IRepository < User > )container[ typeof (IRepository < User > )];


配置文件:

< component
    
id ="UserRespository(其实随便)"
    service
="完整的命名空间.IRepository`1[[完整的命名空间.User, User所在程序集名称]], IRepository所在程序集名称"  
    type
="完整的命名空间.UserRespository, 程序集名称"   />


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值