0
IOC 프레임 워크 인 StructureMap은 특히 규칙 기반 등록으로 특히 좋습니다. 이제 다음을 시도해 보겠습니다 : 클래스에 기본 (매개 변수 없음) 생성자가있을 때 특정 인터페이스를 구현하는 모든 유형을 추가하고 싶습니다. 그리고 형식은이 생성자를 사용하여 만들어야합니다.구조체 addalltypesof가 특정 생성자에 의해 생성되었습니다.
이것은 올바른 유형을 등록 할 때까지 지금까지 가지고 있지만 인스턴스를 만들 때 기본 생성자를 사용해야한다고 지정하는 방법은 무엇입니까?
public class MyRegistry : Registry
{
public MyRegistry()
{
Scan(
x =>
{
x.AssemblyContainingType<IUseCase>();
x.Exclude(t => !HasDefaultConstructor(t));
x.AddAllTypesOf<IUseCase>();
});
}
private static bool HasDefaultConstructor(Type type)
{
var _constructors = type.GetConstructors();
return _constructors.Any(c => IsDefaultConstructor(c));
}
private static bool IsDefaultConstructor(ConstructorInfo constructor)
{
return !constructor.GetParameters().Any();
}
}