Собственность внука, извлекающая информацию деда? - PullRequest
0 голосов
/ 26 марта 2020

Я нахожусь в ситуации, когда у меня есть структура класса, подобная этой:

public class Container {
    public string Name {get; set;}
    public IEnumerable<Entity> Entities {get; set;}
}

public class Entity{
    public string Name {get; set;}
    public IEnumerable<Attribute> Attributes {get; set;}
}

public class Attribute{
    public string Name {get; set;}
    public AttributeEnum Type {get; set;}
    public PoisonSpecification Specification {get; set;}
}

public Enum AttributeEnum{
    poisonA,
    poisonB,
    poisonC,
    poisonX
}

Каждый раз, когда каждый добавляет новый контейнер или модифицирует существующий Контейнер, я выполняю проверку входящего контейнера.

В настоящее время проверка начинается с вершины (уровень контейнера) до низа (спецификация типов)

В настоящее время я нахожусь в ситуации, если я вижу, что Атрибут использует тип toxicX, я должен убедиться, что Speci c Сущность (указанная в TypeSpecification) существует внутри контейнера - но как проверить экземпляр уровня контейнера, когда я нахожусь на уровне TypeSpecification?

Каким-то образом можно сослаться на родительский объект, содержащий свойство - или в этом случае несколько родителей?

1 Ответ

0 голосов
/ 26 марта 2020

выполнить проверку на уровне контейнера:

bool validate( Container c )
{
  foreach( var e in c.Entities )
    foreach( var a in e.Attributes )    
    {
      if (new_or_changed)
        //your validation code
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...