У вас есть два определения одного и того же свойства Value
одно определено переопределением ... и одно новым. Тип возврата не является отличительным признаком в сигнатуре метода, т. Е. Если сигнатура отличается только типом возвращаемого значения, сигнатура считается одинаковой. Итак, используйте переопределение или новый.
В вашем случае вы можете использовать new вместо override для достижения цели. Однако при использовании new вы всегда должны учитывать, что реализованная реализация зависит от типа, для которого вы вызываете метод. * Т.е. 1004 *
var foo = new Foo();
var foo_ = new Foo<string>();
foo.Value // calls the implementation on Foo
foo_.Value // calls the implementation on Foo<T>
((Foo) foo).Value // calls the implementation on Foo