Я только что перешел из Ninject в TinyIoC для инъекций зависимостей, и у меня возникли проблемы с инъекцией конструктора.Инъекция конструктора с 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"
Есть ли что-то не так с тем, как я использую конструктор в jection? Я понимаю, что я мог бы назвать
container.Register<IBar, Bar>(new Bar(value));
и что действительно работает, однако результат является глобальным экземпляром Bar, который не то, что я после.
Любые идеи?
Также: Я использую TinyIoC из Github (https://github.com/grumpydev/TinyIoC) – AndrewG
Забавно, Обоснование TinyIoC имеет много общего с из [Простой инжектор] (http://simpleinjector.codeplex.com). – Steven
@ @ Steven и мы оба называемся Стивен тоже .. spooky :-P –