首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >单位拦截和构造器

单位拦截和构造器
EN

Stack Overflow用户
提问于 2009-06-11 16:57:10
回答 3查看 2.9K关注 0票数 0

我想在Unity中使用截取,这是我的代码:

代码语言:javascript
运行
复制
UnityContainer container = new UnityContainer();
container.AddNewExtension<Interception>();
container.RegisterType<T, T>();
container.Configure<Interception>().SetDefaultInterceptorFor<T>(new VirtualMethodInterceptor());
return container.Resolve<T>();

如果T是一个具有参数的构造函数的类(一个空的构造函数),那么当我调用Resolve时会抛出一个异常,否则它就会工作。如何拦截具有非空构造函数的类型?

更新

代码语言:javascript
运行
复制
UnityContainer container = new UnityContainer();
container.AddNewExtension<Interception>();
container.RegisterType<T, T>();
container.Configure<InjectedMembers>().ConfigureInjectionFor<T>(new InjectionConstructor());
container.Configure<Interception>().SetDefaultInterceptorFor<T>(new VirtualMethodInterceptor());
return container.Resolve<T>();

这段代码可以工作,但是如果我想使用带参数的构造函数呢?

我试过这个:

代码语言:javascript
运行
复制
public static T Resolve<T>(object param)
{
    UnityContainer container = new UnityContainer();
    container.AddNewExtension<Interception>();
    container.RegisterType<T, T>();
    container.Configure<InjectedMembers>().ConfigureInjectionFor<T>(new InjectionConstructor(param));
    container.Configure<Interception>().SetDefaultInterceptorFor<T>(new VirtualMethodInterceptor());
    return container.Resolve<T>();
}

在我的代码中:

代码语言:javascript
运行
复制
var service = Resolve<MyService>(4);

我回来的时候和以前一样.

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-06-22 19:56:42

这是一个错误

票数 1
EN

Stack Overflow用户

发布于 2009-06-18 04:50:13

统一将选择参数最多的构造函数,因此您有几个选项:

1)使用配置指定使用no arg构造函数,如下所示:

代码语言:javascript
运行
复制
Container.Configure<InjectedMembers>()
    .ConfigureInjectionFor<MyService>(new InjectionConstructor());

2)注释你的对象

代码语言:javascript
运行
复制
public class MyService
{
    [InjectionConstructor]
    public MyService()
    {
    }

    public MyService(int arg1)
    {     
    }
}

3)使用您自己的DefaultUnityConstructorSelectorPolicy覆盖它,如果它存在的话,它将选择no构造函数。

票数 1
EN

Stack Overflow用户

发布于 2009-06-11 17:11:29

使用InjectionConstructor属性,如描述的这里

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/982311

复制
相关文章

相似问题

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