IPersistable接口-任何更改字段名称的技巧或破解
本文关键字:破解 接口 任何更 改字段名 IPersistable | 更新日期: 2023-09-27 18:21:19
对于一个可以保存在持久性介质中的类,我正在创建一个名为IPersistable
的接口,该接口旨在提供persistenceId
。
public interface IPersistable
{
private readonly string persistenceId;
}
当然我不能做以上的操作,因为接口不允许字段。如果是这样的话,我会在下面完成
Public Class Customer
{
private readonly string persistenceId;
Public string UserId
{
get{return persistenceId};
}
Public Customer(string customerId)
{
persistenceId = customerId;
}
}
我已经在继承一个类,因此不可能进行多重继承。我可以使用合成,但界面在这里似乎是正确的。向我展示一个巧妙的方法来完成上述操作,而不是向每个需要持久化的类添加一个属性。
问题
如果可能的话,与IPersistable
接口的类是否可以将属性的名称(如果persistenceId是一个属性)更改为有意义的名称?
如果您希望能够持久化现有类型(如int或string),那么接口对您没有帮助。也许可以使用包装类来代替接口?类似于:
class Persistable<T>
{
public Persistable<T>(string PersistanceId, T Data)
public readonly string PersistanceId;
public readonly T Data;
}
怎么了?
public interface IPersistable
{
String PersistenceId { get; }
}
Public Class Customer : IPersistable
{
public string PersistenceId { get; private set; }
public string UserId {
get { return PersistenceId; }
}
.
.
.
}
试试这样的东西:
public interface IPersistable<TType>
{
TType PersistenceId { get; }
}
public abstract PersistableEntity<TType> : IPersistable<TType>
{
private TType persistenceId;
public TType PersistenceId
{
get { return persistenceId; }
}
public PersistableEntity(TType persistenceId)
{
this.persistenceId = persistenceId;
}
}
public class Customer : PersistableEntity<string>
{
public Customer(string persistenceId)
: base(persistenceId)
{
}
}