У меня есть следующие классы:
public class Foo
{
[Import]
public IFirstInterface firstImport;
[Import]
public ISecondInterface secondImport;
// ...
}
public class A : ISecondInterface {}
public class B : ISecondInterface {}
Я хотел бы иметь возможность в классе Bar, при вызове
var foo = compositionContainer.GetExportedValue<Foo>();
Чтобы указать, хочу ли я использовать класс A или B.
Я знаю, я могу указать имя контракта в методе GetExportedvalue.Но насколько я понимаю, это будет означать наличие двух классов Foo.Я хотел бы повторно использовать тот же класс, но указать, какой класс (A или B) используется для удовлетворения зависимости ISecondInterface.
EDIT:"Какие правила будут определять, используете ли выкласс A или B? "
A: Foo вызывается службой wcf.Класс A и B отличаются тем, что они работают на разных объектах.Эти объекты имеют разные поля и не могут быть запрошены одинаково.
Мои занятия не на английском языке, но я постараюсь перевести на более значимые термины, чем Foo и Bar.
Fooможет быть RecordAssigner.RecordAssigner назначает записи пользователям.Логика для этого содержится в этом классе.ISecondInterface - это интерфейс к классу уровня данных, который работает с записями.
Это реализация предоставляет методы для работы с различными типами записей.Хотя оба вида записей могут предоставлять необходимые методы для их назначения, они обрабатываются по-разному на уровне данных.
На уровне обслуживания я хочу иметь возможность вызывать методы с именами AssignRecordTypeA и AssignRecordTypeB безДублирование всего кода в RecordAssigner.