我解析实例时需要在.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也可以提供帮助