对于可以保存在持久性介质中的类,我创建名为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是属性)更改为有意义的内容?
答案 0 :(得分:1)
有什么问题?
public interface IPersistable
{
String PersistenceId { get; }
}
Public Class Customer : IPersistable
{
public string PersistenceId { get; private set; }
public string UserId {
get { return PersistenceId; }
}
.
.
.
}
答案 1 :(得分:1)
尝试这样的事情:
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)
{
}
}
答案 2 :(得分:1)
如果您希望能够保留现有类型(如int或string),则界面将无法帮助您。也许你可以使用包装类而不是接口?类似的东西:
class Persistable<T>
{
public Persistable<T>(string PersistanceId, T Data)
public readonly string PersistanceId;
public readonly T Data;
}