首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

你能在Windsor Container中注册一个类型的现有实例吗?

在 Windsor Container 中注册一个类型的现有实例,您可以按照以下步骤操作:

  1. 在应用程序中安装 Windsor

在您的应用程序中,可以使用以下命令进行 Windsor 的安装:

代码语言:php
复制
Add-Type -Path "[PATH_TO]/Windsor.dll"

其中 [PATH_TO] 是 Windsor 的安装目录。

  1. 加载 Windsor

使用以下代码加载 Windsor:

代码语言:java
复制
var container = new WindsorContainer();
  1. 注册现有类型

您可以使用以下代码来注册一个类型的现有实例:

代码语言:java
复制
container.Register(Component.For<MyType>().Instance(myTypeInstance));

在上面的代码中,MyType 是您要注册的类型,myTypeInstance 是要注入到该类型的实例。

  1. 获得实例

使用以下代码可以获得注册的类型实例:

代码语言:vbnet
复制
var instance = container.Resolve<MyType>();

在上面的代码中,MyType 是您要获得的实例类型,instance 是注册实例的结果。

您也可以使用注册类型时的方法名来获得注册类型实例,例如:

代码语言:csharp
复制
var myInstanceMethod = container.Resolve<MyType>("myInstanceMethodName");

在上面的代码中,"myInstanceMethodName" 是您在使用 Windsor 时指定的要调用 MyType 的实例方法的名称。

通过这样的方法,在 Windsor Container 中注册一个类型的现有实例会变得非常简便。注意,在注册类型实例时,您也可以使用其他 Castle Windsor 的特性和技术,这些都可以在 Windsor 的文档中找到。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

使用 Castle Windsor 实现 Web API 依赖注入

IEnumerable GetServices(Type serviceType); } 接口 IDependencyScope 有两个方法: GetService 创建指定类型一个实例...; GetServices 创建制定类型集合; IDependencyResolver 接口继承自 IDependencyScope 并添加了一个 BeginScope 方法。...注意: 如果 GetService 不能创建指定类型实例, 应当返回 null ; 如果 GetServices 不能创建指定类型实例, 应当返回空集合; 遇到未知类型不能抛出异常。...app.UseWebApi(config); } 向 Windsor 注册 Controller 值得注意是, Windsor注册类型默认全是单例, 而 WebAPI 对每次请求都需要创建 Controller...实例, 在请求完成之后销毁实例, 所以在 Windsor 注册 Controller 类型必须显示声明生命周期为 transient 才能正常使用。

74020

事件总线知多少(2)

使用Castle Windsor 使用IOC容器目的很明确,一个是在注册事件时完成依赖注入,一个是在触发事件时完成依赖解析。从而完成事件动态绑定和触发。 4.2.1....因为Castle Windsor在3.0版本取消了UnRegister方法,所以在进行事件注册时,就不再手动卸载IOC容器注册依赖。...var eventHandlers = IocContainer.ResolveAll(handlerInterface); //循环遍历,仅当解析实例类型与映射字典事件处理类型一致时...方法我们会将某一个事件源绑定事件处理全部触发。...IEventHandler`1"); var eventHandlers = IocContainer.ResolveAll(handlerInterface); //循环遍历,仅当解析实例类型与映射字典事件处理类型一致时

1.1K70

轻量级Golang IoC容器——iocgo

在Java平台有鼎鼎大名Spring框架,在C#平台有Autofac,Unity,Windsor等,我当年C#开发时用最多就是Windsor。...在[长安链]设计,各个模块可以灵活组装,模块之间依赖基于protocol定义接口,每个接口有一个或者多个官方实现,当然第三方也可以提供该接口更多实现。...注册实例如果我们已经有了某个对象实例,那么可以将该实例和其想映射interface直接注册到ioc容器,方便其他依赖对象获取,RegisterInstance函数定义如下:RegisterInstance...获得实例相关映射我们通过Register函数和RegisterInstance函数已经注册到容器,接下来就需要从容器获得指定实例了。...Arguments 指定在调用对应构造函数获得实例时,传递参数,比如int,string等类型不在ioc容器托管参数,可以在这里指定。

70220

依赖注入容器Autofac

在.NET上现在存在许多依赖注入容器, 我也在实践中使用过Castle Windsor、StructureMap、Autofac 、Unity。...in .NET part 6: Unity Container 这里主要介绍一下Autofac,Autofac和其他容器不同之处是它和C#语言结合非常紧密,在使用过程应用侵入性几乎为零,...Autofac主要特性如下: 灵活组件实例化:Autofac支持自动装配,给定组件类型Autofac自动选择使用构造函数注入或者属性注入,Autofac还可以基于lambda表达式创建实例,这使得容器非常灵活...细粒度组件生命周期管理:应用程序通常可以存在一个应用程序范围容器实例,在应用程序还存在大量一个请求范围对象,例如一个HTTP请求,一个IIS工作者线程或者用户会话结束时结束。...自动装配:可以是用lambda表达式注册组件,autofac会根据需要选择构造函数或者属性注入 XML配置文件支持:XML配置文件过度使用时很丑陋,但是在发布时候通常非常有用 组件多服务支持:

1.2K90

Asp.Net Web API 2第十一课——在Web API中使用Dependency Resolver

现在可以切换到另外一个IProductRepository 实例,而不用触及到ProductsController实现。 但是,在Asp.Net Web API不能直接创建一个控制器。...通过提供一个自定义dependency resolver,可以代表框架来创建控制器实例。...GetServices: 创建一个指定类型集合对象 对于控制器,这个框架调用 GetService来获得控制器单个实例。...对于dependency resolver不处理任何类型,GetService 会返回null,GetServices 也会返回一个集合对象,尤其是,别抛出一个未知类型异常。...如果使用一个Ioc容器,不需要在代码中直接连同对象,几个开源.Net Ioc容器是可以利用,例如Autofac, Castle Windsor, Ninject, Spring.NET, StructureMap

68340

ASP.NET Web API和依赖注入

Mark做出了解释: 问题是,在某个(IDependencyResolver)实现所得到一个Type实例,并要求返回一个对象,但却并不了解上下文信息。...不知道依赖关系图有多深,并且当被多次要求提供相同服务实例时,并不知道这是来自同一个HTTP请求,还是多个并发HTTP请求。...Mark建议最好替换服务容器(Service ContainerIHttpControllerActivator接口。...他还列举了两个示例,一个是“使用简单自定义DI容器”,一个是“使用更加健壮DI容器,Castle Windsor”、(Autofac ASP.NET Web API (Beta) Integration...区别主要在于解析类型时候,容器可以使用哪些信息。 在更广范围来说,这只是ASP.NET可扩展性一个示例。

1.2K90

使用 MEF 轻松实现云部署

请注意,尽管我们在此处使用是 MEF,但使用 Unity、Castle Windsor、StructureMap 或其他任何类似容器并按照相似结构应该会取得相同结果,主要差异体现在语法和类型注册语义上...有时候,您希望某一类型所有实例都超出其实际模板类型。目前,实现此目标的最简单方式是注册一个字符串约定名称,它将是您项目或解决方案达成一致约定。在本例,如前所述声明将适用。...因此,用于注册类型和准备容器代码十分简短: // Store the container for later use (resolve type instances) var catalog = new...向我们部署添加新功能相当容易,但更新现有功能或库则不然了。...为此,要求协调实例重新启动,因此,或者需要选择一个首要实例,或者要具有某个投票系统。

1.3K70

Unity 依赖注入

关于Ioc框架有很多,比如astle Windsor、Unity、Spring.NET、StructureMap,我们这边使用微软提供Unity做示例,可以使用Nuget添加Unity,也可以引用...UnityContainer实例方法:RegisterType   向容器中注册需要通过容器生成对象 UnityContainer实例方法:Resolve  设置生成对象注入目标(就是设置生成对象需要注入哪个目标...,都已近介绍了,但是除了构造器注入当我们使用属性注入和方法注入时候,并通过RegisterType,会产生代码产生耦合,当我们添加一个方法或者一个属性或者添加一个方法,都需要去修改代码,这设计显然是不太合理...上面演示了将IMess注册为ZheJiangFood,并声明为单例,ContainerControlledLifetimeManager字面意思上就是Ioc容器管理声明周期,我们也可以不使用类型映射,将某个类注册为单例...当我们声明一个类型为ContainerControlledLifetimeManager,说明该类型就是单例,所以当我们在程序获取该类型实例时,IOC容器会返回上次创建实例,而不会重新创建一个实例

1.2K80

一个简单小程序演示Unity三种依赖注入方式

如果读者对Unity或者IoC没有太多概念,我觉得这个小程序对于初步地认识它们具有一定帮助意义。如果对Unity或者IoC有深入认识,请忽略本文。...然后定义如下几个接口(IA、IB、IC和ID)和它们各自实现类(A、B、C、D)。在类型A定义了3个属性B、C和D,其类型分别为接口IB、IC和ID。...在这段配置,定义了一个名称为defaultContainerUnity容器,并在其中完成了上面定义接口和对应实现类之间映射类型匹配。 1: <?xml version="1.0"?...然后调用它泛型Resolve方法创建一个实现了泛型接口IA对象。最后将返回对象转变成类型A,并检验其B、C和D属性是否是空。...这样控制权就由应用转移到了外部IoC容器,控制权就实现了所谓反转。比如,在类型A需要使用类型B实例,而B实例创建并不由A来负责,而是通过外部容器来创建。

1.6K70

通过自定义ServiceHost实现对WCF扩展

这样控制权就由应用转移到了外部IoC容器,控制权就实现了所谓反转。比如,在类型A需要使用类型B实例,而B实例创建并不由A来负责,而是通过外部容器来创建。...构造函数具有一个字符串类型参数containerName表示配置Unity容器名称。...此外,如果基于契约类型注册不存在,ApplyDispatchBehavior方法还进行了服务契约类型和服务类型之间类型注册。...现在我们从可扩展性角度对服务进行重新设计以实现对不同资源存储方法支持。也就是说,我可以将资源信息定义在资源文件,也可能定义在数据库,或者说访问另一个服务来提供所需要资源。...通过这个配置文件,我们定义了一个名称为defaultContainerUnity容器,并在该容器定义了从IResourceProvider接口到ResxFileProvider类型类型注册

85580

【译】深入研究 Laravel 依赖注入容器

注意: 如果读了官方文档,它使用 $this->app代替 $container (在Laravel应用程序,它实际上是Container一个子类,称为Application这就是为什么称为助手...()); (除了 AnotherClass他自己一些依赖关系,在这种情况下Container将递归实例化它们,直到没有更多) 实例 以下是一个基于PHP-DI docs更实用示例,将邮件功能与用户注册分离...; return $client; }); 解决回调 可以使用 resolving()去注册一个用于绑定完成后回调函数: $container->resolving(GitHub\Client...,她忽略了任何现有实例或单例,并且可以用于创建具有不同参数多个实例,同时依然注入依赖关系: class Post { public function __construct(Database...最后 isShared() - 确定给定类型是否是共享单例/实例 isAlias() - 确定给定字符串是否是已注册别名 hasMethodBinding() - 确定容器是否具有给定方法绑定 getBindings

4.6K70

ASP.NET MVC Controller激活系统详解:IoC应用

这样控制权就由应用转移到了外部IoC容器,控制权就实现了所谓反转。比如在类型A需要使用类型B实例,而B实例创建并不由A来负责,而是通过外部容器来创建。...“依赖属性”,如果采用UnityContainer来激活EmployeeController对象时候,会根据注册类型映射来实例一个实现了IEmployeeRepository类型实例来初始化该属性...如下代码片断所示,在Application_Start方法我们通过当前ControllerBuilder注册一个UnityControllerFactory实例。...Repository返回员工信息,我们需要通过注册为之设置一个具体匹配类型,而这个类型自然就是前面我们定义EmployeeRepository。...如下所示正是Unity相关类型注册配置。到此为止,整个实例编程和配置工作既已完成(忽略了针对样式设置),运行该程序就可以得到如上图所示效果。

1.8K90

PHP面向对象现代AOP框架

可以与任何现有的PHP框架和库集成(有或没有额外配置)。...Step 2 创建应用程序切面内核 这个框架目的是为您应用程序提供简单AOP集成。必须首先为应用程序创建 AspectKernel 类。这个类将在一个地方管理应用程序所有方面。...{ } } Step 3 在前端控制器配置aspect内核 要配置方面内核,请调用内核实例 init() 方法。...我们在这里声明,我们希望在执行Example类所有动态公共方法之前安装一个钩子。这是在注释#0帮助下完成#钩子可以是任何类型稍后会看到它们。但是我们不改变类Example任何代码!...Step 5 在方面内核中注册方面 要注册aspect,只需在内核 configureAop() 方法添加它实例: // app/ApplicationAspectKernel.php use

10310

Spring框架参考手册_5.0.0_中英文对照版_Part II_3.8

BeanPostProcessors作用域是每个容器。只有在使用容器分层情况下,这才是相关。如果一个容器定义了一个BeanPostProcessor,它将只后处理容器beans。...当这样一个类在容器中注册为后处理器时,对于容器创建一个bean实例,在容器初始化方法(例如InitializingBeanafterPropertiesSet()方法和任何已声明初始化方法)被调用之前和任何...例如,如果一个带有@Resource注解依赖,field/setter名称不能直接对应bean声明名字,也没有使用name特性,Spring将通过类型匹配来访问其它bean。...如果你想改变真正bean实例(例如,从配置元数据创建对象),应该需要使用BeanPostProcessor(3.8.1小节描述)。...如果在一个容器定义了一个BeanFactoryPostProcessor,它将适用于那个容器bean定义。

27630

IoC+AOP简单实现

一、基于IoC+AOP编程 到底将IoC和AOP进行整合后,会对编程但来怎样影响,我写了一个简单例子(可以从这里下载该实例)。...在Foo,具有一个类型为IBar只读属性,而DoSomething实现就是通过调用该属性同名方法实现。...不过,万变不离其宗,UnityContainer最根本就是其BuilderStrategy管道(可以参阅我文章《知道Unity IoC Container是如何创建对象?》)。...我们解决方案就是将PIAB对实例封装写在相应BuilderStrategy种,然后通过UnityContainerExtension注册到某个UnityContainer。...接口和实现类型注册被随后执行,不过在真正开发,我们习惯通过配置文件进行注册。这就是整个实现,没有复杂逻辑,却能带来很大用处。

523100

Spring框架参考手册_5.0.0_中英文对照版_Part II_3.3

除了bean定义包含怎么创建一个指定bean信息之外,ApplicationContext实现也允许用户注册容器之外创建现有对象。...虽然在一定程度上是支持覆盖现有的元数据和单例,但运行时新beans注册(并发实时访问工厂)是不被正式支持,可能会引起并发访问异常,在容器与/或状态不一致。...如果使用基于XML配置元数据,可以指定对象类型(或类),它将在元素class属性中进行实例化。...大多数Spring用户更喜欢实际JavaBeans,在容器它仅有一个默认(无参)构造函数,并且属性之后有合适setters,getters方法。在容器也可以有更多外来非bean类型类。...与通过静态工厂方法进行实例化类似,通过实例化工厂方法进行实例化,要从容器调用现有bean非静态方法创建一个bean。

23550
领券