Я даже не уверен, что называется этим принципом или как его искать, поэтому я искренне извиняюсь, если он был поднят раньше, но лучший способ сделать это - пример.В C# я могу скрыть/изменить аксессоры в подклассах?
class Properties
{
public string Name { get; set; }
}
class MyClass
{
class SubProperties: Properties
{
public override Name
{
get { return GetActualName(); }
set { SetActualName(value); }
}
}
public SubProperties ClassProperties;
private string GetActualName()
{
return SomeFunction();
}
private void SetActualName(string s)
{
ClassProperties.Name = SomeOtherFunction(s);
}
}
Идея заключается в том, чтобы иметь какой-либо объект, который инстанцирует MyClass
есть полностью доступное свойство ClassProperties
. Для этого объекта он будет выглядеть точно как объект Properties, но за кулисами MyClass фактически вычисляет и изменяет результаты полей. Этот метод декларации, очевидно, неверен, так как я не могу получить доступ к GetActualName()
и SetActualName()
из определения SubProperties
. Как я могу добиться чего-то подобного?
Это похоже на то, что мне нужно, я сделаю это. Единственное реальное различие в том, что в моем случае нет личной переменной «name» в MyClass - это фактически чтение/запись в сокет, но я хочу полностью скрыть это от вызывающего объекта. Спасибо! – Diego
Отлично. Это сделал трюк. – Diego