Вы можете передать экземпляр Batch
конструктору Instruction
, а затем сохранить ссылку на это Batch
, которую вы можете предоставить с помощью свойства. (Это уже было показано в другой ответ - я повторяю это, потому что она обеспечивает контекст для того, что я собираюсь добавить следующий.)
class Instruction
{
public Instruction(Batch parent)
{
Parent = parent;
}
public Batch Parent { get; private set; }
public string InstructionUID { get; set; }
}
Instruction
Теперь имеет Parent
свойство, которое возвращает Batch
.
Но есть пробел. Если вы звоните:
var parent = batch.Instruction[0].Parent
parent == batch
? Похоже, это намерение. В файле Instruction
содержится ссылка на содержащийся в нем Batch
.
Но ничто не обеспечивает это. Например, я мог бы сделать это:
someBatch.Instruction[0] = someOtherBatch.Instruction[1];
Теперь someBatch
содержит массив Instruction
, но, по крайней мере, один из них на самом деле имеет someOtherBatch
в качестве родителя.
Может быть, возможно не большое дело, но я думаю, что если Parent
предназначен для обозначения Batch
содержащей Instruction
, но он не может, то вы на самом деле не сделали то, что вы стремитесь.
Я бы рекомендовал создать отдельный класс, который содержит как Batch
, так и Instruction
. (Возможно ParentInstructionRelation
?)
public class ParentInstructionRelation
{
Batch Parent {get;private set;}
Instruction Instruction {get;private set;}
public ParentInstructionRelation(Batch parent, Instruction instruction)
{
Parent = parent;
Instruction = instruction;
}
}
Instruction
Таким образом, не нужна ссылка на его родителей. Вероятно, он не должен иметь ссылку на своего родителя. Что делать, если тот же Instruction
находится в двух разных экземплярах Batch
? Какой из них является родителем?
Но если Batch
нужно разоблачить Instruction
и ссылку на себя, то он может сделать это путем возврата ParentInstructionRelation
. Или класс, который читает Instruction
от Batch
, может создать эти отношения.
var instructions = batch.InstructionArray
.Select(instruction => new ParentInstructionRelation(batch, instruction));
'new Инструкция [3]' просто размеры массива, все значения будут «null», там нет экземпляров 'Instruction'. Вы должны создать их, и хороший момент заключается в том, что вы передаете родительский элемент в качестве параметра конструктору 'Instruction'. –
Вы должны как-то установить свои инструкции. 'myBatch.instructionArray [2] = new Инструкция {инструкцияUid =" foo "};' –
ли я создаю экземпляр myBatch.instructionArray [n] или не имеет никакого значения для моего вопроса ... – p4ndepravity