It sounds like you tried defining a property named Value
in both the derived and base types.
Something like this maybe:
public class SomeClass
{
public object Value { get; }
}
public class SomeClass<T> : SomeClass
{
[SerializeField] private MyClass[] _value;
public T Value => _value;
}
If you do this, and the member in the base type isn’t virtual or abstract, and the member the derived type an override, then the compiler will warn you that the derived type hides the field in the base type. More information about member hiding here.
You rarely want to do member hiding, but in the very particular case, where you want to replace a property of type object with a property of type T returning the same value, member hiding is a perfectly valid option (I often do this myself).
So you could do something like this:
public abstract class SomeClass
{
public object Value => GetValue();
protected abstract object GetValue();
}
public class SomeClass<T> : SomeClass
{
[SerializeField] private T _value;
public new T Value => _value;
protected override object GetValue() => _value;
}