Я хочу использовать StructureMap ObjectFactory для обработки экземпляров моих классов, используемых моей службой WCF. Хотя моего ограниченного опыта достаточно для обработки простых отображений 1: 1 между одним интерфейсом и этим единственным классом, который его реализует, я столкнулся с проблемой, когда конструктор принимает несколько параметров одного и того же интерфейса.
Я считаю, что могу связать несколько конкретных классов с одним и тем же интерфейсом, дав каждому отображению имя, но как мне указать StructureMap, какое отображение использовать для первого и второго параметра конструктора?
Это класс, который я хочу, чтобы ObjectFactory обрабатывал для меня:
public class MasterPolicy {
public MasterPolicy(IPolicy alfaPolicy, IPolicy numericPolicy)
{
AlphaPolicy = alphaPolicy;
NumericPolicy = numericPolicy;
}
public IPolicy AlphaPolicy {get; private set; }
public IPolicy NumericPolicy {get; private set; }
public bool IsValid(string s)
{
if (!AlphaPolicy.IsValid(s)) return false;
if (!NumericPolicy.IsValid(s)) return false;
return true;
}
}
Интерфейс IPolicy реализован несколькими классами:
public interface IPolicy
{
bool IsValid(string s);
}
public class AlphaPolicy : IPolicy
{
public bool IsValid(string s) { return true; }
}
public class NumericPolicy : IPolicy
{
public bool IsValid(string s) { return true; }
}
(Конечно, MasterPolicy тоже может реализовывать интерфейс IPolicy).