Мне очень нравится StructureMap в качестве IOC-фреймворка, особенно при регистрации на основе соглашений.Теперь я пытаюсь сделать следующее: я хочу добавить все типы, которые реализуют определенный интерфейс, когда у класса есть конструктор по умолчанию (без параметров).И типы должны быть созданы с помощью этого конструктора.
Это то, что я до сих пор имею, который регистрирует правильные типы, но как мне указать, что конструктор по умолчанию должен использоваться при создании экземпляра.
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();
}
}