嘿,我找不到解决这个问题的方法: 我正在为EAV模式实现通用接口
想要执行这样的代码:
Entity<GPS> gps = new Entity<GPS>("Path.To.GPS");
Console.WriteLine(gps.Attributes.Latitude);
Console.WriteLine(gps.Attributes.Longitude);
其中:
public class GPS : IAttributes
{
public double Latitude { get; set; }
public double Longitude { get; set; }
}
public abstract class Entity
{
public IAttributes Attributes { get; set; }
public string Path { get; set; }
public Entity(string path)
{
this.Path = path;
}
}
public class Entity<T> : Entity
where T : IAttributes, new()
{
private T attributes = new T();
new public T Attributes
{
get { return attributes; }
set { attributes = value; }
}
public Entity(string path)
: base(path)
{ }
}
public interface IAttributes
{
/* Empty by design */
}
很容易添加到Entity类方法进行数据加载 迭代T中的所有参数并从某个源加载它们
简单路径:
Entity<GPS> gps = new Entity<GPS>("Path.To.GPS");
gps.Reload(); // <-- ADD THIS HERE
Console.WriteLine(gps.Attributes.Latitude);
Console.WriteLine(gps.Attributes.Longitude);
但是如何进行延迟加载?
是否有可能将某些代码“附加”到GPS类中的每个属性的访问者而无需修改它,不想添加和基类或接口到它
感谢您的任何建议。