Задать вопрос
devspec
@devspec
Помогло? Отметь решением

Как узнать, какому свойству класса присвоен данный экземпляр?

Вопрос для знатоков C#.
У меня есть два класса:

class A {
    public B prop1 {get; set;}
    public B prop2 {get; set;}
}

class B {
    public B() {
        // я присвоен свойству prop1 или prop2?
    }
}


Как мне узнать из конструктора класса B, какому из свойств родительского класса A (prop1 или prop2) данный экземпляр класса B присвоен? Интересует именно название свойства.
  • Вопрос задан
  • 825 просмотров
Подписаться 5 Оценить 8 комментариев
Решения вопроса 1
devspec
@devspec Автор вопроса
Помогло? Отметь решением
class A
{
    private B _prop1;
    public B prop1
    {
        get => _prop1;
        set => SetProp(value, ref _prop1);
    }

    private B _prop2;
    public B prop2
    {
        get => _prop2;
        set => SetProp(value, ref _prop2);
    }

    private void SetProp(B value, ref B field, [CallerMemberName] string propName = null)
    {
        if(field != null) field.Association = null;
        field = value;
        if (field != null) field.Association = propName;
    }

}

class B
{
    public string Association { get; set; }
}


Как вам такое решение?
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
@alexs0ff
Вопрос некорректен. экземпляр класса B в момент выполнения кода в конструкторе ничему не может быть присвоен. Сначала выполняется конструктор типа, а потом экземпляр может попасть или в prop1 Или prop2.
Ответ написан
Комментировать
Griboks
@Griboks Куратор тега C#
Передать класс А в конструктор или использовать рефлексию. Ну или передать просто название в конструктор.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы