2
我想在委託工廠中使用Autofac中的裝飾器,但我似乎無法得到它來解決參數。Autofac修飾器+代理工廠
public interface IFoo
{ }
public class Foo : IFoo
{
public Foo(string bar)
{ ... }
}
public class DecoratedFoo : IFoo
{
public DecoratedFoo(IFoo decorated)
{ ... }
}
我想注入一個服務,像這樣:
public SomeService(Func<string, IFoo> factory)
{
// I would expect IFoo to be a DecoratedFoo here
IFoo foo = factory("hello");
}
我已經註冊的組件,像這樣:
builder.RegisterType<Foo>()
.Named<IFoo>("foo")
.UsingConstructor(typeof(string));
builder.RegisterDecorator<IFoo>(
(ctx, inner) => new DecoratedFoo(inner),
fromKey: "foo");
我得到一個錯誤說,它不能化解我的參數吧。這是一個簡化的例子,但我不知道bar的值是什麼(因此使用工廠)。
有什麼方法可以完成我在做的事情嗎?
謝謝你指點我的問題。 – Dismissile