如何使不可编辑的对象可编辑

时间:2013-11-29 14:04:44

标签: c# object

这是我的类对象的样子:

Class MyInfo :IDisposable
{
    List<MYObject> list;

    public long X { get; private set; }
        public IList<RasterFieldInfo> FieldInfo
    {
        get
        {
            return _ fields.AsReadOnly();
        }
    }
}

我有一个只读的对象MyInfo(没有公共设置器),我正在寻找一种使其可写的有效方法。 我无法将此对象设为可写(即我不能将setter设为public),因为这会给用户留下一个印象,即他正在对原始对象进行更改(虽然这不是真的)并且由于其他原因。我在寻找的是:

  1. 最小代码重复,这个类里面有很多代码。
  2. 使用此对象的人易于使用。
  3. 最佳设计和实施。
  4. 我不能将任何制定者公之于众,以使其可写。
  5. 可编辑对象用法如下:

    MyInfo obj = ds.GetInfo();
    MyInfo editableObj = Obj.CreateEditableObject(); 
    ….
    //Modify members of editableObj
    …
    Ds.SetInfo(editableObj);
    

    问题是如何通过调用CreateEditableObject方法提供相同类型的可编辑对象。

1 个答案:

答案 0 :(得分:0)

你可以使用这种模式(遗憾的是我不记得它是如何调用的)

class MyInfo
{
    public int MyProperty{ get; private set; }

    public MyInfo WithMyProperty(int value)
    {
       return new MyInfo(){ MyProperty = value };
    }
}


MyInfo obj = ds.GetInfo();
MyInfo modified = obj.WithMyProperty(1234);

原始对象当然不会被修改。