这是我的类对象的样子:
Class MyInfo :IDisposable
{
List<MYObject> list;
public long X { get; private set; }
public IList<RasterFieldInfo> FieldInfo
{
get
{
return _ fields.AsReadOnly();
}
}
}
我有一个只读的对象MyInfo(没有公共设置器),我正在寻找一种使其可写的有效方法。 我无法将此对象设为可写(即我不能将setter设为public),因为这会给用户留下一个印象,即他正在对原始对象进行更改(虽然这不是真的)并且由于其他原因。我在寻找的是:
可编辑对象用法如下:
MyInfo obj = ds.GetInfo();
MyInfo editableObj = Obj.CreateEditableObject();
….
//Modify members of editableObj
…
Ds.SetInfo(editableObj);
问题是如何通过调用CreateEditableObject方法提供相同类型的可编辑对象。
答案 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);
原始对象当然不会被修改。