사용자 정의 IOC 컨테이너의 생성자 매개 변수로 인스턴스를 해결하는 방법은 무엇입니까?
-
19-08-2019 - |
문제
제어 용기의 반전을 만들려고합니다. 지금 당장 나는 사전에 유형이있는 객체를 저장하고 요청할 때 참조를 해결합니다. 그러나 참조 또는 새 인스턴스를 해결할 수 있도록하고 싶습니다. Activator 클래스로 새 인스턴스를 만들 수 있습니다. 그러나 해결하기 위해 객체의 생성자가 1, 2 또는 매개 변수를 가져 오면 어떻게해야합니까?
예를 들어, 나는 다음과 같은 말을 할 수 있기를 원합니다.
Container.register<IFoo>(new Foo(Proxy));
Container.register<IBar>(new Boo(Proxy, DataThing));
그리고처럼 해결하십시오
IFoo MyFoo = Resolver.resolve<IFoo>();
IBar MyBar = Resolver.resolve<IBar>();
여기서 myfoo가 주어진 매개 변수와 함께 심어집니다 대리 그리고 mybar 대리 그리고 Datathing.
무엇을 하는가 해결하다 그런 일을하기 위해해야합니까?
해결책 2
나는 그것을 방법으로 나누기로 결정했다. 컨테이너에 저장된 인스턴스를 제공하는 결의. 그리고 새로운 인스턴스를 재조정합니다.
같은 것 :
public T Create<T>()
{
if (registeredTypes.ContainsKey(typeof(T)))
return (T)Activator.CreateInstance(registeredTypes[typeof(T)].
GetType());
else
throw new DependencyResolverException("Can't
create type. Type " + typeof(T) + "
not found.");
}
다른 팁
점검 http://funq.codeplex.com. 이것은 Lambda 표현식을 사용하여 해결할 기능을 정의하는 매우 작은 용기입니다. 여러 매개 변수를 처리합니다.
제휴하지 않습니다 StackOverflow