c#-Autofac-在解析时在.OnActivated方法内传递值

我解析实例时需要在.OnActivated方法内部传递值

builder.RegisterType<MyType>().PropertiesAutowired().
    .OnActivated(x => {                    
        var myValue  =    //i need to get a value passed when i call Resolve
        //do stuffs
        }
    );

var myObject = scope.Resolve<MyType>();   //<--to pass a value here

这个怎么做?我知道有工厂吗?是否存在一种简单的方法

解决方法:

您有两种主要情况:

1 /您的值是整个应用程序的静态范围

您可以像这样简单地注册

int dummy = 20;

builder.RegisterType<MyType>().PropertiesAutowired()
.OnActivated(x => 
{
    var myValue = dummy;
} 

这是完全有效的

2 / You参数仅在解析时已知

您可以将参数添加为构造函数参数:

public class MyType
{
    private int intValue;

    public MyType(int myCustomValue)
    {
        this.intValue = myCustomValue;
    }
}

然后,您可以构建一个小的Abstract Factory或使用内置的int Func

int dummy = 20;
var myObjectFactory = scope.Resolve<Func<int, MyType>>();

var myObject = myObjectFactory(dummy);

Delegate Factories也可以提供帮助

上一篇:C#-策略工厂模式的自动配置(已解决)


下一篇:CodeGo.net>如何配置Autofac解析CQRS处理程序并在Web API项目中编写其查询调度程序