0

サンプルの ICollection を含む IRecord があります。ICollection は次のようになります。

Sample sample1 = scope.DbContext.Samples.AddNew(new Sample 
        { 
            Name = GenerateName("Sample one"),
            Tests = tests
        });

Sample sample2 = scope.DbContext.Samples.AddNew(new Sample 
    { 
        Name = GenerateName("Sample two"),
        Tests = tests
    });

ICollection<Sample> samples = new Collection<Sample>();
samples.Add(sample1);
samples.Add(sample2);

次に、サンプルをレコードに追加します。

Order record = scope.DbContext.Orders.AddNew(new Order 
{ 
    Name = GenerateName("Order"),
    Samples = samples 
});

サンプルをレコードから取り出したいと思います。私がするとき、私はそれを知っています

object name = record["Name"];

正しく生成された名前を取得します。しかし、私がするとき

object propertyValue = record["Samples"];

アイテムはありません。私は次のことをしたい:

object propertyValue = record["Samples"];
if (typeof(IEnumerable<IRecord>).IsAssignableFrom(propertyValue.GetType()))
{
    foreach (var property in (IEnumerable<IRecord>)propertyValue)
    {
        var test = property;
    }
}

では、record["Samples"] が ICollection を取得しないのはなぜでしょうか?

4

1 に答える 1

1

あなたが本当に使いたいのはasキーワードだと思います。

var samples = record["Samples"] as ICollection<Sample>;

しかし、なぜ CLR 静的型を使用しないのでしょうか?

var samples = record.Samples;

ここで何をしようとしているのか理解していないだけかもしれませんが、上記のように簡単に煮詰めることができるようです。

于 2012-04-02T19:49:32.210 に答える