2014-04-26 6 views
1

Ma classe ElementGroup a une propriété Elements, qui est de type List<Element>. Pour activer la navigation vers son parent ElementGroup, ma classe Element a une propriété ElementGroup, qui est de type ElementGroup. Habituellement, je le configurerais en utilisant les propriétés de navigation dans Entity Framework, mais je voulais le configurer temporairement dans ma couche de domaine avant d'ajouter ma couche de données. Comment cela est-il fait?Propriétés de navigation dans les classes de domaine sans EF

Cette approche semble fonctionner, mais il nécessite une variable locale pour mon objet ElementGroup:

ElementGroup eg = new ElementGroup("Dummy Name", 100); 
competition.ElementGroups.Add(eg); 
eg.Elements.Add(new Element(new DateTime(2014, 9, 14, 12, 0, 0)) { ElementGroup = eg }); 
eg.Elements.Add(new Element(new DateTime(2014, 9, 14, 13, 0, 0)) { ElementGroup = eg }); 

Je me demande s'il y a un moyen de le faire sans créer une variable locale en faisant quelque chose comme ça :

competition.ElementGroups.Add(new ElementGroup("Dummy Name", 100) 
{ 
    Elements = new List<Element> { 
    new Element(new DateTime(2014, 9, 14, 12, 0, 0)) { }, 
    new Element(new DateTime(2014, 9, 14, 13, 0, 0)) { } 
    } 
}); 

Je ne sais pas comment assigner la ElementGroup actuelle à la nouvelle propriété de ElementGroupElement en utilisant des accolades de initialiseur d'objet ou en utilisant une autre technique.

Répondre

0

Créer une méthode AddElement dans ElementGroup:

public Element AddElement(DateTime datetime) 
{ 
    var element = new Element(datetime) { ElementGroup = this }; 
    this.Elements.Add(element); 
    return element; 
} 
+0

Comment cette méthode est utilisée dans le code d'application? Par exemple, disons que je voulais ajouter un ElementGroup et trois Elements dans une seule instruction (sans créer de variable locale). – MikeyWazz

+0

Pourquoi une seule déclaration est-elle si importante pour vous? Je ne vois pas comment vous pouvez créer des objets avec des références mutuelles sans au moins une variable locale. –

+0

C'est important parce que j'essaie d'apprendre et quand j'ai écrit le code, j'avais l'impression qu'il y avait probablement une façon plus élégante de faire ce que j'essayais de faire. – MikeyWazz

Questions connexes