Sie können eine Instanz von Batch
an den Konstruktor übergeben und dann einen Verweis auf diese Batch
speichern, die Sie mit einer Eigenschaft verfügbar machen können. (Dies wurde bereits in einer anderen Antwort gezeigt - ich wiederhole es, weil es Kontext bereitstellt, was ich neben hinzufügen.)
class Instruction
{
public Instruction(Batch parent)
{
Parent = parent;
}
public Batch Parent { get; private set; }
public string InstructionUID { get; set; }
}
Jetzt Instruction
hat eine Parent
Eigenschaft, die ein Batch
zurückgibt.
Aber da ist eine Lücke. Wenn Sie rufen
var parent = batch.Instruction[0].Parent
parent == batch
sind? Es sieht so aus, als ob das Absicht ist. Die Instruction
enthält einen Verweis auf die Batch
, die es enthält.
Aber nichts setzt das durch. Zum Beispiel könnte ich dies tun:
someBatch.Instruction[0] = someOtherBatch.Instruction[1];
Jetzt someBatch
eine Reihe von Instruction
enthält, aber mindestens einer von ihnen tatsächlich someOtherBatch
als seine Eltern.
Vielleicht ist diese Möglichkeit keine große Sache, aber ich denke, dass, wenn Parent
zum Batch
die Instruction
enthält, beziehen ist gemeint, aber es könnte nicht, dann haben Sie nicht wirklich erreicht, was Sie anstreben.
Ich würde empfehlen, eine separate Klasse zu erstellen, die sowohl eine Batch
als auch eine enthält. (Vielleicht ParentInstructionRelation
?)
public class ParentInstructionRelation
{
Batch Parent {get;private set;}
Instruction Instruction {get;private set;}
public ParentInstructionRelation(Batch parent, Instruction instruction)
{
Parent = parent;
Instruction = instruction;
}
}
Auf diese Weise Instruction
braucht keinen Hinweis auf ihre Eltern. Es sollte wahrscheinlich keinen Bezug zu seinem Elternteil haben. Was passiert, wenn Instruction
in zwei verschiedenen Instanzen von Batch
ist? Welches ist das Elternteil?
Aber wenn Batch
eine Instruction
und einen Verweis auf sich selbst aussetzen muss, dann kann es tun, indem Sie einen ParentInstructionRelation
zurück. Oder eine Klasse, die die Instruction
von Batch
liest, kann diese Beziehung erstellen.
'new Instruction [3]' Größe nur das Array, alle Werte werden 'null' sein, es gibt keine' Anweisung' Instanzen in dort. Sie müssen sie erstellen, und der gute Moment ist, dass Sie das Elternelement als Parameter an den Konstruktor von "Instruction" übergeben. –
Sie müssen irgendwie Ihre Anweisungen festlegen. 'myBatch.instructionArray [2] = neuer Befehl {instructionUid =" foo "};' –
ob ich myBatch.instructionArray [n] instanziiere oder nicht, macht keinen Unterschied zu meiner Frage ... – p4ndepravity