首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Castle和泛型

Castle和泛型
EN

Stack Overflow用户
提问于 2010-01-16 07:19:56
回答 1查看 117关注 0票数 0

考虑以下代码:

代码语言:javascript
复制
interface IRepository<T>
{
    void Save();
}

class Repository<T>
{
    public virtual void Save() // something 
    { }
}

interface IOtherRepository : IRepository<OtherClass>
{
    void Other();
}

class OtherRepository : Repository<OtherClass>, IOtherRepository
{
    public override void Save() // something different
    { }

    public override void Other(){ }
}

当我调用container.Resolve时,如何配置Castle Windsor给我一个OtherRepository实例?

如果Castle Windsor不能做到这一点,那么哪些ioc容器可以做到呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-01-16 08:53:12

代码语言:javascript
复制
var container = new WindsorContainer();
container.Register(Component.For(typeof(IRepository<>))
                            .ImplementedBy(typeof(Repository<>));
container.Register(Component.For<IRepository<OtherClass>, IOtherRepository>()
                            .ImplementedBy<OtherRepository>());
var repo = container.Resolve<IRepository<Something>>();
Assert.IsInstanceOfType(typeof(Repository<Something>), repo);
var specificRepo = container.Resolve<IRepository<OtherClass>>();
Assert.IsInstanceOfType(typeof(OtherRepository), specificRepo);
var otherRepo = container.Resolve<IOtherRepository>();
Assert.AreSame(otherRepo, specificRepo);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2075403

复制
相关文章

相似问题

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