如何从IRecord中获取ICollection属性?

时间:2012-04-02 19:39:24

标签: c# record enumerator

我有一个包含ICollection of Samples的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;
    }
}

那么为什么记录[“样本”]没有得到ICollection?

1 个答案:

答案 0 :(得分:1)

在我看来,您真正想要使用的是as关键字。

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

但是,为什么不只是使用CLR静态类型?

var samples = record.Samples;

也许我只是不理解你在这里想做什么,但似乎它可以简单地煮到上面。