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

在运行时从UnityContainer中删除已注册的类型?

在UnityContainer中删除已注册的类型,可以使用以下方法:

代码语言:csharp
复制
container.Unregister<T>();

其中,T 是要删除的类型。

例如,如果要从UnityContainer中删除已注册的IFoo 类型,可以使用以下代码:

代码语言:csharp
复制
container.Unregister<IFoo>();

需要注意的是,在删除已注册的类型时,需要确保该类型没有被其他类型依赖,否则删除操作可能会导致其他类型的注册失效。

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

相关·内容

Git仓库恢复删除分支、文件或丢失commit

在使用Git过程,有时可能会有一些误操作 比如:执行checkout -f 或 reset -hard 或 branch -d删除一个分支 结果造成本地(远程)分支或某些...commit丢失 可以通过reflog来进行恢复,前提是丢失分支或commit信息没有被git gc清除 一般情况下,gc对那些无用object会保留很长时间后才清除...reflog是git提供一个内部工具,用于记录对git仓库进行各种操作 可以使用git reflog show或git log -g命令来看到所有的操作日志 恢复过程很简单...通过git log -g命令来找到我们需要恢复信息对应commit_id,可以通过提交时间和日期来辨别。...Q:怎样找回历史版本删除文件?

3.3K30

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

所谓依赖注入,就是由外部容器在运行时动态地将依赖对象注入到组件之中。具体依赖注入方式又包括如下三种典型形式。...构造函数具有一个字符串类型参数containerName表示配置Unity容器名称。...此外,如果基于契约类型注册不存在,ApplyDispatchBehavior方法还进行了服务契约类型和服务类型之间类型注册。...现在我们可扩展性角度对服务进行重新设计以实现对不同资源存储方法支持。也就是说,我可以将资源信息定义在资源文件,也可能定义在数据库,或者说访问另一个服务来提供你所需要资源。...通过这个配置文件,我们定义了一个名称为defaultContainerUnity容器,并在该容器定义了IResourceProvider接口到ResxFileProvider类型类型注册

85580

让IoC动态解析自定义配置(提供基于Unity实现)

在《通过自定义配置实现插件式设计》,通过在运行时对配置动态解析实现了真正“插件式”设计,其本质就是让配置自行提供对配置类型实例创建。在这篇文章,我们将更进一步,让自定义配置和IoC集成起来。...四、如何为UnityContainer进行“类型注册” 一、如果IoC能够解析自定义配置定义“注入” 我们先来看看如果一个IoC容器能够解析通过自定义配置定义注入信息,会为我们设计和编程带来怎样改变...UnityContainer来解析定义在ResourceSettings这个配置类型“注入信息”,那么就需要ResourceSettings对象能够提供它一个完备TypeRegistration列表...现在我们就来介绍ResourceSettings如果为UnityContainer提供类型注册信息,现在我们将关注点放在上面给出代码省略部分。...,这里提供默认实现——基于具体ResourceProvider类型类型注册

92590

IOC编程

开放/封闭原则: 添加任何新行为,应该是扩展到新类,而不应该直接修改原来运行良好代码。 3. 李式替代原则: 类型T对象可以用其子类型对象替换,程序可以正常运行。 4....通过依赖注入,另一个类负责在运行时将依赖项注入(推送)到高级客户端类,例如: public class ManagementController : Controller { private ITenantStore...ManagementController类定义构造函数,该构造函数需要注入一个ITenantStore类型对象,应用程序必须在运行时知道它应该实例化ITenantStore接口哪个实现,然后才能继续实例化...; 这个Regist一个类型api,但是每次创建一个新接口都需要手动Regist映射关系也很不方便,所以我们更好做法是自动注册。...它可以最大限度地减少您需要编写类型注册数量。您可以指示Unity容器扫描一组程序集,然后根据一组规则自动注册多个映射,而不是单独指定每个类型映射。如果你有很多类型注册,它将为你节省大量工作。

62630

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

所谓依赖注入,就是由外部容器在运行时动态地将依赖对象注入到组件之中。...,这就需要某个类型注册机制来解决服务接口和服务类型之间匹配关系; 构造器注入(Constructor Injection):IoC容器会智能地选择选择和调用适合构造函数以创建依赖对象。..."Yes" : "No"); 13: } 14: } 如下给出执行结果我们可以得到这样结论:通过Resolve方法返回是一个类型为A对象,该对象三个属性被进行了有效初始化...“依赖属性”,如果采用UnityContainer来激活EmployeeController对象时候,会根据注册类型映射来实例化一个实现了IEmployeeRepository类型实例来初始化该属性...Repository返回员工信息,我们需要通过注册为之设置一个具体匹配类型,而这个类型自然就是前面我们定义EmployeeRepository。

1.8K90

IoC+AOP简单实现

在Foo,具有一个类型为IBar只读属性,而DoSomething实现就是通过调用该属性同名方法实现。...通过接口和类型匹配关系注册UnityContainer知道如何根据接口找到相应实现类型(IFoo-〉Foo,IBar-〉Bar),这不难理解,这也不是本篇文章介绍重点。...如何将PIAB对实例封装操作注入到UnityContainer怎个对象创建流程呢?这需要借助于UnityContainer提供扩展机制。...我们解决方案就是将PIAB对实例封装写在相应BuilderStrategy种,然后通过UnityContainerExtension注册到某个UnityContainer。...接口和实现类型注册被随后执行,不过在真正开发,我们习惯通过配置文件进行注册。这就是整个实现,没有复杂逻辑,却能带来很大用处。

522100

IoC在ASP.NET Web API应用

这样控制权就由应用转移到了外部IoC容器,控制权就实现了所谓反转。比如在类型A需要使用类型B实例,而B实例创建并不由A来负责,而是通过外部容器来创建。...,这个IContactRepository接口类型属性在构造函数初始化。...如下面的代码片断所示,我们在Application_Start方法创建了一个UnityContainer对象,并通过调用泛型方法RegisterType注册了IContactRepository...我们定义了额外方法Register来注册接口与实现类型之间映射关系。为了确保获取服务实例能够被正常地释放,我们定义了一个元素类型为IDisposable列表。...我们只需要将Global.asax针对自定义HttpControllerActivator注册替换成针对NinjectDependencyResolver注册即可。

1.7K60

通过定义UnityContainer扩展变”Explicit Interception”为”Automatic Interception”

不过Unity仅仅提供“显式”拦截机制,以致我们为了注册可被拦截类型会多写很多代码和配置。本篇文章通过UnityContainer扩展提供了一种“自动”拦截机制。...我们定了如下一个简单SimpleCallHandler,在Invoke方法通过在控制台打印一段文字用以证明应用在某个类型CallHandler被执行了。...."); 38: } 39: } 所谓显式拦截就是说:如果某个类型需要被拦截处理,比如将其显式地注册为“可被拦截类型”,并且需要显式地注册拦截器(决定拦截机制)和拦截行为。...对于本实例来说,为了上应用在Foo、Bar和Baz上CallHandler能够起作用,我们需要通过如下方式对这三个类型进行显式地拦截注册。...二、自动拦截 如果通过我们自定义UnityContainer扩展AutoInterception,你就无须对需要被拦截类型进行显式注册

67890

自定义Unity 容器扩展 --- Unity Application Block Event Broker

该项目允许在应用程序种使用自定义容器扩展来发布和订阅事件。 自定义Unity 容器扩展是一个 UnityContainerExtension 基类继承而来并且实现了一些额外方法自定义类型。...该扩展可以访问容器,并且可以接收到容器已经注册事件....,但是订阅者和发布者必须是由 EventBroker 代理类注册....在您创建了一个自定义容器扩展以后,你需要把他添加到Unity 容器.您可以通过编译并且指定一个类型和程序集名称,然后写入配置文件,也可以通过编程方式添加到Unity, 事件截获扩展快速入门通过调用...Unity 容器类一个方法,将自定义SimpleEventBrokerExtension 类型在运时候添加到容器.

697100

实现WCF和Unity 集成

Artech 已经写过一篇[原创]WCF后续之旅(7):通过WCF Extension实现和Enterprise Library Unity Container集成,在这个解决方案Unity侵入性有点强...第二步:创建UnityInstanceProvider对应Behavior 第一步已经创建了自定义UnityInstanceProvider,现在需要在运行时插入我们这个新Provider,这项工作可以通过...Endpoints,并传递给相应服务类型InstanceProvider。...但在Web.svc,ServiceHost是动态创建,没有显示指定ServiceHostFactory,那它在默认情况下是使用ServiceHostFactory,而ServiceHostFactory...产生是ServiceHost对象,想要使用我们上一步自定义UnityServiceHost ,需要实现一个自定义ServcieHostFactory,实现代码非常简单: using System

86380

Unity Container几种注册方式与示例1.实例注册2.简单类型注册

1.实例注册 最简单注册方式就是实例注册,Unity 容器负责维护对一个类型单例引用,比如: 有如下实际类型: namespace ConsoleSample { public class...RegisterInstance方法对这个类型进行实例注册: var container = new UnityContainer(); SampleClass sampleClass = new SampleClass...(); container.RegisterInstance(sampleClass); 而后,我们可以使用UnityContainerResolve方法对这个类型进行解析和调用: SampleClass...2.简单类型注册 更常见类型注册是映射借口与实际类型,有如下接口与实现接口类型: 接口定义 namespace ConsoleSample { public interface IFuckUp...,我们使用了在1节不同方式对类型进行解析 ?

1.3K60

Unity 依赖注入

,以创建依赖对象,如果被选择构造函数具有相应参数,IOC容器在调用构造函数之前会解析注册依赖关系并自行获得相应参数。...UnityContainer实例方法:RegisterType   向容器中注册需要通过容器生成对象 UnityContainer实例方法:Resolve  设置生成对象注入目标(就是设置生成对象需要注入哪个目标...3、方法注入-通过InjectionMethod特性 方法注入和属性方式使用一样,方法注入只需要在方法前加[InjectionMethod]标记就行了方法注入定义上看,只是模糊说对某个方法注入,但是方法注入无非三种...上面演示了将IMess注册为ZheJiangFood,并声明为单例,ContainerControlledLifetimeManager字面意思上就是Ioc容器管理声明周期,我们也可以不使用类型映射,将某个类注册为单例...当我们声明一个类型为ContainerControlledLifetimeManager,说明该类型就是单例,所以当我们在程序获取该类型实例时,IOC容器会返回上次创建实例,而不会重新创建一个实例

1.2K80

你知道Unity IoC Container是如何创建对象吗?

比如ASP.NET行时就可以看成是一个由若干HttpModule组成处理HTTP请求管道,WCFBinding就是一个由若干信道(Channel)组成处理Message管道。...ASP.NET运行时管道上下文对象是HttpContext,而Binding管道上下文是BindingContext。 二、UnityContainer是BuildStrategy管道 ?...名称我们不难看出,四个方法分别用于完成对象创建前/后和对象回收前后相应操作。...现在我们假设需要通过UnityContainer来创建下面一个类型为Foo对象: 1: public class Foo 2: { 3: public Guid Id { get...在SingletonBuilderStrategy,我们通过一个静态字典用于缓存创建成功对象,该对象在字典Key为创建对象类型

1K90

WCF技术剖析之七:如何实现WCF与EnterLib PIAB、Unity之间集成

我们知道,UnityContainer采用动态注册接口或者抽象类于具体类型匹配关系,使得我们可以利用UnityContaner实现基于接口或者抽象类方式创建我们希望具体类对象。...在构造函数接受两个输入参数:contractType与containerName,分别表示服务契约类型与相应UnityContainer名称。...根据containerName判断相应UnityContainer是否已经创建,如果是,则直接从上述两个静态变量中提取相应UnityContainer类型匹配列表。...在创建之前,我们需要判断服务契约类型与服务类型之间类型匹配是否已经注册UnityContainer,如果没有,则进行注册,并将类型匹配添加到当前类型匹配列表(_registeredTypeMappings...输出结果,我们可以清晰地看到,返回5个返回时间均是相同,由此我们可以看出应用才SyncTimeProvider上面的CachingCallHandlerAttribute生效了。

58510

EnterLib PIAB又一个BUG?

Foo继承MarshalByRefObject,类型为IBar属性上应用了DependencyAttribute,从而Foo对象在被UnityContainer进行创建过程,该属性能能够根据注册类型匹配进行初始化...错误信息我们不难看出,具体异常发生在对属性Bar初始化上面。...但是如果PIAB硬是要兼职做IoC所做事,它本身应该提供类型匹配注册机制,但是没有。...在下面的代码,我们通过构建UnityContainer创建对象Foo。由于Foo对象被创建之前,我们已经注册了IBar和Bar之间匹配关系,Foo属性Bar会正常地被初始化。...通过这一阵子对EnterLib以及Unity深入应用,发现了很多问题。虽然我个人对EnterLib还算推崇——很早版本一直用过来,EnterLib设计上确实在不断完善。

452100
领券