У меня есть класс команд, который должен иметь 2 конструктора. Однако, с использованием структуры структуры кажется, что я могу указать только один конструктор для . Я решил проблему на данный момент, подтипируя определенный класс команд , каждый из которых реализует собственный интерфейс и конструктор . Как показано ниже. ISelectCommand реализует два отдельных интерфейса для конструктора строк и конструктора int, только для , регистрируя два подтипа, используя структурную карту.Перегрузка конструктора структуры структуры
Однако, я считаю, что это взломать, и я просто задаюсь вопросом, почему это не так? Возможно, для structmap разрешить подпись конструктора по типу , переданному в качестве параметра для конструктора? Тогда я мог бы зарегистрировать SelectProductCommand как ISelectCommand и создать экземпляр: ObjectFactury.With (10) .Use>(); orObjectFactury.With ("testproduct"). Используйте>();
public class SelectProductCommand : ISelectCommand<IProduct>,
ICommand, IExecutable
{
private readonly Func<Product, Boolean> _selector;
private IEnumerable<IProduct> _resultList;
public SelectProductCommand(Func<Product, Boolean> selector)
{
_selector = selector;
}
public IEnumerable<IProduct> Result
{
get { return _resultList; }
}
public void Execute(GenFormDataContext context)
{
_resultList = GetProductRepository().Fetch(context,
_selector);
}
private Repository<IProduct, Product> GetProductRepository()
{
return ObjectFactory.GetInstance<Repository<IProduct,
Product>>();
}
}
public class SelectProductIntCommand: SelectProductCommand
{
public SelectProductIntCommand(Int32 id): base(x =>
x.ProductId == id) {}
}
public class SelectProductStringCommand: SelectProductCommand
{
public SelectProductStringCommand(String name): base(x =>
x.ProductName.Contains(name)) {}
}
P.s. Я знаю, как сообщить структуре, какую конструкторную карту использовать, но опять мой вопрос в том, есть ли способ, чтобы структура структуры выбирала правильный конструктор на основе параметра, переданного конструктору (т. Е. С использованием регулярной перегрузки метода).
Вот некоторые ссылки, чтобы вы собираетесь на команд/обработчиков: http://lostechies.com/jimmybogard/2010/01/07/advanced-structuremap-custom-registration-conventions-for-partially- закрытые типы/ http://lostechies.com/derickbailey/2008/11/20/ptom-command-and-conquer-your-ui-coupling-problems/ – Henning
Прошу прощения, но это не тот ответ, который я искал для. Я знаю сообщение, которое вы упомянули Джереми Миллером.Но, как я уже упоминал, это касается прежде всего указания конкретного конструктора. Что касается ваших комментариев по шаблону команды, спасибо, я посмотрю на это. Однако вы должны понимать, что класс команд (возможно, именование не подходит) - это всего лишь оболочка метода select для извлечения продукта из репозитория. У меня также есть команды вставки, удаления и обновления. Цель этой настройки заключается в том, что я могу добавить их в список команд, которые передаются диспетчеру транзакций. – halcwb