Я читал другие темы, такие как this , но у меня они не работали.
У меня есть два класса:
public class ClassA
{
public string _shouldBeInteger;
public string _shouldBeBool;
public string _shouldBeDateTime;
}
public class ClassB : ClassA
{
public int? shouldBeInteger
{
get { return (_shouldBeInteger != null) ? Convert.ToInt32(Convert.ToDouble(_shouldBeInteger)) : new int?(); }
set { _shouldBeInteger = Convert.ToString(value); }
}
//... same thing with datetime etc.
}
Если я сейчас создаю новый объект ClassB, я получаю
_shouldBeInteger, _shouldBeBool, _shouldBeDateTime;
shouldBeInteger,shouldBeBool,shouldBeDateTime
Но я хочу скрыть _variables для пользователя.
Установка их в ClassB будет переопределять их, но мне нужно получить к ним доступ, чтобы проанализировать строковые значения.
Обновление
Существует ClassC, заполняющий значения ClassAs, что главным образом является причиной, по которой они должны быть доступны для записи. Я не могу изменить способ работы, но я полностью контролирую ClassA и ClassB
ClassC //not changeAble for me
{
//infomagic filling values of ClassA
}
Установка переменных ClassA в private не будет работать, потому что программист ClassA произвел это странным образом.
Решение
Поскольку ClassA должен быть доступен для записи, но не для чтения другими классами, кроме наследуемых, я наконец-то получил это:
ClassA
{
public string _shouldBeInteger { protected get; set; }
//and so on
}
, который заставляет ClassB работать с этими свойствами, не передавая их наружу.
Intellisense по-прежнему показывает их, но вы можете использовать:
[EditorBrowsable(EditorBrowsableState.Never)]
чтобы решить это.
Спасибо всем.