Я использую Unity как IoC. Я хочу зарегистрировать несколько классов в контейнере с RegisterTypes следующим образом:Unity RegisterTypes не работает должным образом
container.RegisterTypes(
AllClasses.FromAssembliesInBasePath(),
WithMappings.FromAllInterfaces,
WithName.TypeName,
WithLifetime.PerResolve
);
Но типы arn't класс instanced.My Интерфейс:
namespace Taschenrechner
{
public interface IBerechne
{
int Berechnen(Formel formel);
}
}
И мои классы:
class Addition : IRechenoperation
{
public char Operator
{
get
{
return '+';
}
}
public int Berechnen(int operand1, int operand2)
{
return operand1 + operand2;
}
}
class Subtraktion : IRechenoperation
{
public char Operator
{
get
{
return '-';
}
}
public int Berechnen(int operand1, int operand2)
{
return operand1 - operand2;
}
}
И конструктор, в котором я хотел бы использовать эти типы, является следующим:
public Parser(Formel formel,IRechenoperation[] rechenoperationen)
{
this.ergebnisformel = formel;
this.rechenoperationen = rechenoperationen;
}
Когда я выполняю код rechenoperationen, это всегда пустой массив.
Если я чего-то не хватает, вы показываете интерфейс ('IBerechne'), который ваши классы не реализуют (они реализуют« IRechenoperation »). Чтобы быть уверенным, что ваши классы «Добавление» и «Субтракция» находятся в «AllClasses.FromAssembliesInBasePath()»? – Jcl
Я сделал ошибку в примере должен быть этот интерфейс: публичный интерфейс IRechenoperation { int Berechnen (int operand1, int operand2); char Оператор {get; } } –
Опять же, вы проверили «Дополнение» и «Subtraktion» в возвращаемом перечислении из «AllClasses.FromAssembliesInBasePath()»? – Jcl