Искам да имам общ клас за моята стойност на параметъра и да връщам съдържанието му с помощта на интерфейсен метод, но имам грешка при компилиране относно липсата на съвпадащ тип връщане. Има ли начин това да се поправи? Моят код по-долу:
public class Parameter
{
public Parameter(String name, int value)
{
this.name = name;
this.type = eType.typeInt;
this.parameterValue = new ParameterValueTemplate<int>(value);
}
public Parameter(String name, double value)
{
this.name = name;
this.type = eType.typeDouble;
this.parameterValue = new ParameterValueTemplate<double>(value);
}
public interface IParameterValue
{
int GetValue();
}
class ParameterValueTemplate<T> : IParameterValue
{
public ParameterValueTemplate(T value)
{
this.value = value;
}
public T GetValue()
{
return value;
}
T value;
}
public String name;
public IParameterValue parameterValue;
}
int
като тип на връщане от интерфейса за всеки общ шаблон за стойност на параметър. - person Vlad   schedule 25.11.2014T
да бъдеIParameterValue
, имате нужда от общо ограничение заT
, а не за внедряване на интерфейса във вашия общ клас. - person Preston Guillot   schedule 25.11.2014Parameter.
. Не казвам, че това е страхотна идея тук (или непременно навсякъде), но не съм сигурен в какъв смисъл напълно отхвърля смисъла на интерфейса. Можете ли да дадете пример, в който това нарушава целта на даден интерфейс? - person Kirk Woll   schedule 25.11.2014Parameter
обект. Как това има някакъв идиоматичен смисъл? (Разбира се, аз съм против вложените типове като цяло, така че мнението ми е доста пристрастно). - person BradleyDotNET   schedule 25.11.2014Interfaces
клас. Аз не бих го препоръчал, но не променя семантиката, функционалността, поведението или честно казано нещо относно интерфейса или неговото изпълнение. - person Kirk Woll   schedule 25.11.2014public interface IParameterValue<T> { T GetValue(); }
-- и след това да декларирате типа шаблон по този начин --class ParameterValueTemplate<T> : IParameterValue<T>
. Но от въпроса ви не става ясно кога това засяга някакъв по-широк проблем, който може да имате с дизайна тук. - person Peter Duniho   schedule 26.11.2014object
като тип. Въпреки това нищо в моето предложение не изисква типътParameter
да бъде общ; само интерфейсът и внедряващият тип (който така или иначе вече сте направили общ). - person Peter Duniho   schedule 26.11.2014GetValue()
да върне. Винагиint
чрез преобразуване ли е, nullable ли еint
,object
илиT
каквото и да използва шаблонът? - person John Alexiou   schedule 01.12.2014