c# - 创建一个通用设置器,我可以使用它来设置类中的任何属性
问题描述
我知道这是可能的,我只是在这里完全空白。基本上我想要的是以下内容:
public abstract class Object
{
private int id;
public virtual int Id
{
get => id;
set => Set(ref id, value)
}
public bool Set<T>(ref T field, T value)
{
????
}
}
public abstract class DerivedObject : IdObject
{
private string name;
public string Name
{
get => name;
set => Set(ref name, value);
}
}
这可能有点令人困惑,但我想要发生的是,我希望可以选择让所有从 Id Object 派生的类能够使用该Set()
方法将值更改为它们的属性,它有事可做我想如何实现IRevertibleChangeTracking
但更深入。
有没有人可以帮助我解决这个问题?基本上我需要填写空白(?)来填充Set()
顶级类中的方法
编辑:编辑 Set() 方法以反映 Code Casters 评论
解决方案
Errm ..你自己几乎没有回答这个问题吗?你现在只需要在 Set 中做 name = value 不是吗?!下面的代码都可以正常工作。我不确定你想从 Set 返回什么 bool,所以我让它无效。
private void Run()
{
IdObject idObject = new IdObject();
idObject.Id = 1;
DerivedObject derivedObject = new DerivedObject();
derivedObject.Id = 2;
derivedObject.Name = "MyName";
}
}
public class IdObject
{
private int id;
public virtual int Id
{
get => id;
set => Set(ref id, value);
}
public void Set<T>(ref T name, T value)
{
name = value;
}
}
public class DerivedObject : IdObject
{
private string name;
public string Name
{
get => name;
set => Set(ref name, value);
}
}
推荐阅读
- kubernetes - Calico 节点状态返回 Calico 进程未运行
- python - 将要选择/取消选择的列值定义为默认值
- python - 为什么垂直线坐标不同?
- python-3.x - 运行 AWS Lambda 函数以跨账户整理证书
- c# - 尝试在智能卡上生成密钥时出错
- reactjs - 反应和表格
- c - 如何使用 GDB 访问特定的内存位置
- java - 在 Java TensorFlow 1.15 中使用 Python 构建的 TensorFlow 2.1.0 模型 | 图中没有名为 [input] 的操作
- java - 如何保护 Android 应用程序
- python - 如何在python中分配逗号分隔的元素以形成列表