我刚刚从 Ninject 更改为 TinyIoC 进行依赖注入,但在构造函数注入时遇到了问题。
我设法将其简化为以下代码段:
public interface IBar { }
public class Foo
{
public Foo(IBar bar) { }
}
public class Bar : IBar
{
public Bar(string value) { }
}
class Program
{
static void Main(string[] args)
{
var container = TinyIoCContainer.Current;
string value = "test";
container.Register<IBar, Bar>().UsingConstructor(() => new Bar(value));
var foo = container.Resolve<Foo>();
Console.WriteLine(foo.GetType());
}
}
这会导致 TinyIoCResolutionException 被抛出:
"Unable to resolve type: TinyIoCTestApp.Foo"
并且在该异常内部是一连串内部异常:
"Unable to resolve type: TinyIoCTestApp.Bar"
"Unable to resolve type: System.String"
"Unable to resolve type: System.Char[]"
"Value cannot be null.\r\nParameter name: key"
我使用构造函数注入的方式有问题吗?我意识到我可以打电话
container.Register<IBar, Bar>(new Bar(value));
这确实有效,但是结果是 Bar 的全局实例,这不是我所追求的。
有任何想法吗?