[英]How to bind object's property to another object's property? (C#)
我正在制作一个图形控件类Info
,它将在屏幕上显示一些文本。 文本是某个对象的字符串。 我希望能够从Info
类的实例中获取该对象的最新值。
class Info
{
public string Text;
}
void Program()
{
ClassA obj = new ClassA();
obj.name = "Instance of ClassA";
Info wind1 = new Info();
wind1.Text = obj.name; // this just copies current value, but should be a reference or something
/* obj.name value changes several times before it's time to display it again */
// Info window drawing method
foreach (var item in Windows) // Windows is List<Info>
Draw(item.Text); // this doesn't get the latest value
}
如何更改代码,以便可以从绘图部分中获取最新的字符串值?
更新:如果您需要适用于任何类型的东西,则必须使用委托。 例如:
class Info
{
private Func<string> getText;
public Info(Func<string> getText)
{
getText = getText;
}
public string Text
{
get
{
return getText();
}
}
}
void Program
{
ClassA obj = new ClassA();
obj.name = "Instance of ClassA";
Info wind1 = new Info(() => obj.name);
// Now do your stuff.
}
在这种情况下, Info
提供一个匿名函数 ,该函数返回一个字符串。 当您访问其Text
属性时,将对该函数求值以检索该字符串。 字符串的检索方法以及字符串的来源由客户端代码(即Program
方法)确定。 这样, Info
不会依赖任何特定类型。
您可以将ClassA
对象传递到Info
实例中,以便它可以获取.name
本身的值。
大概是这样吗?
class Info
{
public Info(ClassA obj)
{
TheObject = obj;
}
public ClassA TheObject
{
get;
set;
}
public string Text
{
get
{
return TheObject.name;
}
}
}
void Program
{
ClassA obj = new ClassA();
obj.name = "Instance of ClassA";
Info wind1 = new Info(obj);
// Now do your stuff.
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.