У меня есть иерархия объектов ISomething
, и теперь я пытаюсь получить отдельные объекты для вычисления параметров для объектов ISomething
. Я ожидаю довольно много однозначного сопоставления.Связывание двух иерархий с использованием генераторов
public interface ISomething
{
void SetParameters(IParameters p);
}
public interface IParameterCalculator<TSomething> where TSomething : class, ISomething
{
IParameters Calculate();
}
Я хотел бы сделать это немного более безопасным, например. чтобы параметры, рассчитанные данным калькулятором, соответствовали только соответствующему объекту. Поэтому я попытался сделать параметры родовыми:
public interface IParameterCalculator<TSomething> where TSomething : class, ISomething
{
IParameters<TSomething> Calculate();
}
Я не уверен, как это использовать в интерфейсе ISomething. В C++
есть стандартные хаки с шаблонами для достижения этого, есть ли подобные методы в C#
? Или любые другие идеи о том, как связать иерархию IParameterCalculator
с ISomething
безопасным типом?
Не могли бы вы показать пример классов, которые могли бы реализовать эти интерфейсы (в необщем способе), так что мы можем попытаться обобщить этот конкретный пример. Как бы то ни было, я просто не вижу, что вы на самом деле пытаетесь сделать с этими интерфейсами. – Servy
Рассчитывает настройку параметров? Я смущен, потому что я бы предположил, что вам нужно будет установить параметр перед вызовом метода вычисления. Чего вы действительно пытаетесь достичь? Можете ли вы представить реальный пример? –
@Servy В следующем вопросе есть пример http://stackoverflow.com/questions/21599639/how-to-avoid-redundant-code-without-undesirable-double-cast-of-generics. – Lijo