У меня есть поле double[,]
в классе, и важно, чтобы прямой доступ к нему не передавался извне, поэтому я создал свойство чтения-записи для управления им и сделал его private
.У меня также есть вложенный struct
в классе, который я хочу сохранить как тип значения.Сама структура имеет поле double[,]
, которое, опять же, управляется соответствующим свойством чтения-записи.При определенных условиях, если свойству присваивается значение, которое недопустимо определенным образом, оно выбрасывает пользовательский exception
.Один из аргументов, который мне нужно передать exception
, основан на значении поля double[,]
из родительского класса, но я, кажется, не могу получить к нему доступ из структуры, не сделав его public
или internal
.Я пробовал оба protected
и private
, но ни один не работает.Есть ли другой обходной путь?
class myClass {
protected double[,] classField;
public double[,] classProperty {
get { return (double[,])classField.Clone();
set { /* code to validate the value and assign it */ }
}
private struct myStruct {
private double[,] structField;
public structProperty{
get { return (double[,])structField.Clone(); }
set {
if (!validate(value))
throw new customException(classField.getLength(1));
structField = (double[,])value.Clone();
}
}
//other fields, constructors, and methods...
}
//other fields, constructors, and methods...
}
Я рассматривал возможность доступа к свойству вместо поля, но мне понадобится значение свойства для конкретного экземпляра, который включает рассматриваемый экземпляр структуры.Может быть, есть что-то вроде this.parent
(я пробовал это, и это не сработало, но, возможно, какой-то обходной путь, похожий по концепции)?