首页 > 解决方案 > 创建一个通用设置器,我可以使用它来设置类中的任何属性

问题描述

我知道这是可能的,我只是在这里完全空白。基本上我想要的是以下内容:

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 评论

标签: c#.net

解决方案


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);
    }
}

推荐阅读