gpt4 book ai didi

c# - Autofac - 在解析时在 .OnActivated 方法中传递一个值

转载 作者:行者123 更新时间:2023-11-30 16:11:50 26 4
gpt4 key购买 nike

当我解析一个实例时,我需要在 .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/你的值(value)是静态应用范围

您可以像这样简单地注册

int dummy = 20;

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

这是完全正确的

2/你的参数只在解析时已知

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

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# - Autofac - 在解析时在 .OnActivated 方法中传递一个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23886335/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com