我有一个包含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?
答案 0 :(得分:1)
在我看来,您真正想要使用的是as
关键字。
var samples = record["Samples"] as ICollection<Sample>;
但是,为什么不只是使用CLR静态类型?
var samples = record.Samples;
也许我只是不理解你在这里想做什么,但似乎它可以简单地煮到上面。