场景一:接口和实现都是泛型。
//
// 类库
//
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, 程序集名称" />
// 类库
//
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, 程序集名称" />
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>)];
// 类库
//
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, 程序集名称" />
id="UserRespository(其实随便)"
service="完整的命名空间.IRepository`1[[完整的命名空间.User, User所在程序集名称]], IRepository所在程序集名称"
type="完整的命名空间.UserRespository, 程序集名称" />
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· 字符编码:从基础到乱码解决
· Open-Sora 2.0 重磅开源!