Azure TableServiceEntities の実装を抽象化して、任意の型のオブジェクトを受け取り、そのオブジェクトのプロパティを TableServiceEntity のプロパティとして使用するエンティティを 1 つ持つようにしたいと考えています。
私の基本オブジェクトは次のようになります
public class SomeObject
{
[EntityAttribute(PartitionKey=true)]
public string OneProperty {get; set:}
[EntityAttribute(RowKey=true)]
public string TwoProperty {get; set;}
public string SomeOtherProperty {get;set;}
}
public class SomeEntity<T> : TableServiceEntity
{
public SomeEntity(T obj)
{
foreach (var propertyInfo in properties)
{
object[] attributes = propertyInfo.GetCustomAttributes(typeof (DataObjectAttributes), false);
foreach (var attribute in attributes)
{
DataObjectAttributes doa = (DataObjectAttributes) attribute;
if (doa.PartitionKey)
PartitionKey = propertyInfo.Name;
}
}
}
}
次に、このようなコンテキストでエンティティにアクセスできました
var objects =
(from entity in context.CreateQuery<SomeEntity>("SomeEntities") select entity);
var entityList = objects.ToList();
foreach (var obj in entityList)
{
var someObject = new SomeObject();
SomeObject.OneProperty = obj.OneProperty;
SomeObject.TwoProperty = obj.TwoProperty;
}
これはそれほど難しいことではないように思えますが、考えられる解決策が多すぎて、自分自身を混乱させてしまったような気がします。
ご指摘ありがとうございます。