如何将字段传递给 "has a" 关系中的子对象列表
How to pass the field to list of child objects in "has a" relationship
我有一个classStep
public class TrainingStep
{
private List<Part> parts;
public Part currentPart;
public void AddPart(Part part)
{
parts.Add(part);
}
///a lot of public methods which are called from one layer above Step( a class containing Step list)
}
在此代码中,Part
对 Step
一无所知。
currentPart
经常变化
我希望 parts
所有人都知道哪个是当前
为了实现这一点,我考虑添加 step
作为 Part
class 构造函数的参数,以便每个部分都知道它属于哪个 Step
。
像这样
public Part(Step step, ...)
{
this.step = step;
}
但是这种解决方案的问题是我可以使用我传递的引用从 Part
访问 Step
class 中的每个 public 方法通过构造函数。
但我只想访问 Part
中的 currentPart
字段。
我怎样才能做到这一点?
您可以定义一个 Func<Part>
,其中 returns 您的 currentPart
并将此委托传递给您的部分。
public class TrainingStep
{
private List<Part> parts;
public Part currentPart;
private Func<Part> getCurrentPartFunc = () => currentPart;
public void AddPart(Part part)
{
part.GetCurrentpart = getCurrentPartFunc;
parts.Add(part);
}
}
class Part
{
public Func<Part> GetCurrentPart {get; set;}
}
我有一个classStep
public class TrainingStep
{
private List<Part> parts;
public Part currentPart;
public void AddPart(Part part)
{
parts.Add(part);
}
///a lot of public methods which are called from one layer above Step( a class containing Step list)
}
在此代码中,Part
对 Step
一无所知。
currentPart
经常变化
我希望 parts
所有人都知道哪个是当前
为了实现这一点,我考虑添加 step
作为 Part
class 构造函数的参数,以便每个部分都知道它属于哪个 Step
。
像这样
public Part(Step step, ...)
{
this.step = step;
}
但是这种解决方案的问题是我可以使用我传递的引用从 Part
访问 Step
class 中的每个 public 方法通过构造函数。
但我只想访问 Part
中的 currentPart
字段。
我怎样才能做到这一点?
您可以定义一个 Func<Part>
,其中 returns 您的 currentPart
并将此委托传递给您的部分。
public class TrainingStep
{
private List<Part> parts;
public Part currentPart;
private Func<Part> getCurrentPartFunc = () => currentPart;
public void AddPart(Part part)
{
part.GetCurrentpart = getCurrentPartFunc;
parts.Add(part);
}
}
class Part
{
public Func<Part> GetCurrentPart {get; set;}
}