1
ねえ、私はこのような問題の解決策を見つけることができません: 私は永続性の無知と遅延ロード
は、このようなコードを実行したい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クラスのすべてのプロパティのアクセサにいくつかのコードを「添付」することが可能です。