将类绑定到另一个类的属性

时间:2012-02-28 10:32:49

标签: c# architecture parameters properties

标题可能听起来有点奇怪,所以我会尝试解释我的问题:

假设我有一个包含一些信息的课程:

class InfoHolder
{
  public int MyInfo1 {get; set;}
  public int MyInfo2 { get; set; }
}

然后我有另一个类,它用信息做了一些事情:

class InfoGUIRepresenter
{
  // Display an int in some kind of GUI
  // Allow the user to change the int via the GUI
}

现在我需要使用representer类的两个对象来向用户公开我的Info类:两个信息中的每一个都有一个代表。为了实现这一点,将每个属性作为某种"参数"传递将是很好的。我的代表班。 但当然,这在C#中是不可能的。另一种解决方案是传递属性的名称,然后使用反射来访问它们 - 不是很好!

这有什么解决方案吗?也许是某种解决这类问题的架构? 谢谢!

2 个答案:

答案 0 :(得分:3)

一个选项是传递两个代理 - 一个用于setter,一个用于getter:

var holder = new InfoHolder();

var representer = new InfoGUIRepresenter(() => holder.MyInfo1,
                                         value => holder.MyInfo1 = value);

然后,您的InfoGUIRepresenter构造函数会占用Func<int>Action<int>。 (或者你可以为不同类型的财产制作代表通用的。)

答案 1 :(得分:0)

您提到显示“在某种GUI中”,这意味着您正在使用GUI框架。当然,该框架支持针对这种情况的定义良好的模型。例如MVVM如果您正在使用WPF(您的信息对象是模型,您的UI是一个视图,您可以通过绑定到UI元素属性的视图模型属性从视图到模型进行绑定)。你是不是想在这里重新发明轮子?