Я заинтересован в создании неизменяемого класса, который имеет свойства, которые нельзя изменить, и изменяемый класс, который вытекает из него. Эти объекты будут простыми объектами данных, представляющими записи базы данных, поэтому они будут иметь только неизменные значения для свойств.Любой способ сделать изменяемый объект, полученный из неизменяемого объекта в C#?
Моя цель состоит в том, чтобы мой уровень доступа к данным создавал изменчивые версии объектов, обычно устанавливая свойства на основе значений базы данных, но передавая версии приложения только для чтения обратно в приложение. (Я в порядке с тем, что код мог явным образом отбросить неизменяемый объект обратно в изменчивый, если разработчик действительно захотел.)
Я могу сделать это уродливо (это слово?), Используя методы для добытчики и сеттера и имеющие публичный новый сеттер для изменяемого класса:
public class ImmutableClient {
private int _clientId;
public int getClientId() { return _clientId; }
protected void setClientId(int clientId) { _clientId = clientId; }
}
public class Client : ImmutableClient {
public new void setClientId(int clientId) { base.setClientId(clientId); }
}
Я предпочитаем использовать авто-свойство, если это возможно - они намного лучше при отладке. Кроме этого, мне все равно, как выглядит код, потому что он просто исходит из генератора кода и никогда не рассматривается.
Любые идеи?
Это прекрасно - я думал, что у меня на уме, что я даже не думал об интерфейсах, но это абсолютно сработало для моего сценария. Большое спасибо. –