Как я могу получить свойство ICollection из IRecord? - PullRequest
0 голосов
/ 02 апреля 2012

У меня есть IRecord, которая содержит ICollection of Samples. 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;
    }
}

Так почему запись ["Samples"] не получает ICollection?

1 Ответ

1 голос
/ 02 апреля 2012

Мне кажется, что вы действительно хотите использовать ключевое слово as.

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

Однако почему вы просто не используете статический тип CLR?

var samples = record.Samples;

Может быть, я просто не понимаю, что вы пытаетесь сделать здесь, но кажется, что это можно просто сварить до вышесказанного.

...