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 回答