구현하는 모든 인터페이스에 대해 유형을 등록 할 수 있습니까?SimpleInjector - 모든 인터페이스에 대한 유형을 등록하십시오.
public class Bow : IWeapon
{
#region IWeapon Members
public string Attack()
{
return "Shooted with a bow";
}
#endregion
}
public class HumanFighter
{
private readonly IWeapon weapon = null;
public HumanFighter(IWeapon weapon)
{
this.weapon = weapon;
}
public string Fight()
{
return this.weapon.Attack();
}
}
[Test]
public void Test2b()
{
Container container = new Container();
container.RegisterSingle<Bow>();
container.RegisterSingle<HumanFighter>();
// this would match the IWeapon to the Bow, as it
// is implemented by Bow
var humanFighter1 = container.GetInstance<HumanFighter>();
string s = humanFighter1.Fight();
}
I가 자동 배선을하고 싶으면 다음과 같이 사용할 수 있습니다
: 예를 들어 당신이 모든 구현 된 인터페이스에 의해 하나의 구현을 등록 할 수 있습니다 다음과 같은 확장 방법을 가지고 사용되는 구성 요소 - 리플렉션을 통해 수행 할 수 있지만 형식을 자동으로 등록하고 모든 구현 인터페이스에 대해 자동으로 연결할 수있는 것은 무엇입니까? –
일괄 등록은 제네릭 형식에 대해 즉시 사용할 수 있지만 일반이 아닌 인터페이스에는 지원되지 않습니다. 이는 신중한 설계 결정입니다. 여기에 대한 자세한 내용을 볼 수 있습니다 (http://simpleinjector.codeplex.com/wikipage?title=Advanced-scenarios#Batch_Registration). 지원되지 않는 이유와 리플렉션을 사용하여이를 수행하는 방법을 알려줍니다. 이 문제가 발생하면 알려주십시오. 기꺼이 도와 드리겠습니다. – Steven
리플렉션을 통해 해결했습니다. 그러나 다른 IOC 컨테이너로 할 수있는 것처럼 네이티브로 수행 할 수 있는지 알고 싶었습니다. 그렇다면 다시 큰 문제는 아니며 리플렉션을 통해 쉽게 구현할 수 있습니다. –