我需要两个相似对象(C#)之间的绑定:
public class TypeA
{
public int I;
public string S;
}
public class TypeB
{
public IntField I;
public StringField S;
}
当 TypeA 中的字段发生更改时,我需要更新 TypeB 中的匹配字段。
IntField 是一个具有 int 类型的 Value 字段的对象,因此更新 TypeB 可以写为:
bInstance.I.Value = aInstance.I;
如果我理解正确,如果我使用 INotifyPropertyChanged 将 TypeB 绑定到 TypeA,它将导致样板:
aInstance.PropertyChanged += (sender, args) =>
{
if (args.PropertyName == "I")
this.I.Value = sender.I;
if (args.PropertyName == "S")
this.S.Value = sender.S;
};
还:
- 我可以访问这两种类型的代码,我宁愿不更改 TypeB。
- 我有大约 15 对类型,例如 TypeA 和 TypeB - 我想避免样板文件。
- 性能非常重要,因此反射不是首选选项。
- 也许静态反射是一种选择?我听说过,但我不确定:
- 如何在没有样板的情况下使用它。
- 它的表现。
- 将它用于相同类型对的不同实例(即 a1Instance->b1Instance、a2Intance->b2Instance 等)。
编辑:
IntField 是一个类。它用于系统中存在的另一种类型的数据绑定(复杂,整个系统都依赖于此)。它继承自表示通用可绑定字段的类。这是其中的一部分:
public class IntField : GeneralField
{
private int _value;
public int Value
{
get { return _value; }
set
{
IsDirty = true;
_value = value;
}
}
// ... a couple of abstract method implementations go here (setting _value, and getting value in a non-type specific way)
}