Можно проверить текущий стек во время выполнения. Это позволит вам проверить класс вызывающего метода:
StackTrace stackTrace = new StackTrace();
var callingMethod = stackTrace.GetFrame(1).GetMethod();
var callingType = callingMethod.ReflectedType
//Or possible callingMethod.DeclaringType, depending on need
Однако этот тип кода должен содержать аварийные сигналы. Использование отражения для размотки стека является хрупким, неинтуитивным и бросает вызов separation of concerns. Установителем свойства является абстракция, предназначенная для установки значения, дающего ничего, кроме установленного значения.
Существует несколько более сильных альтернатив. Среди них, рассмотреть наличие метода, называемого только UIControls
:
public void SetMyPropertyFromUiControl(MyType value)
{
this.MyProperty = value;
... other logic concerning UIControl
}
Если детали экземпляра UIControl
используется для установки свойства имеют важное значение, метод подписи может выглядеть следующим образом:
public void SetMyPropertyFromUiControl(MyType value, UIControl control)
{
this.MyProperty = value;
... other logic concerning UIControl that uses the control parameter
}
Что такое 'modifier', и что это, что вы думаете, это проблема с кодом ? – Guffa
Здесь вы останавливаете использование свойства и используете метод вместо этого. С аргументом. –