Вопрос по c#, linq, anonymous-types, var – Как мне получить доступ к свойствам анонимного объекта вне его области?

1

Сфера может быть не подходящим словом. С помощью следующего кода я могуполучить доступ к элементу коллекцийс объектасвойства. Есть ли лучший тип возвращаемых данных или способ доступа к этим свойствам?

protected object Modules()
{
    DirectoryInfo di = new DirectoryInfo(Server.MapPath("~/"));
    var folders = from x in di.GetDirectories()
                    where
                    !(new string[] {
                        "app_data","bin","obj","scripts","styles","properties"
                        }).Contains(x.Name.ToLower())
                    select new
                    {
                        Name = x.Name,
                        Path = x.FullName
                    };
    return folders
}

Ваш Ответ

4   ответа
1

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

Два других варианта, о которых я могу подумать, - это использовать динамический тип (если используется платформа 4.0 или новее) или создать определенный тип вместо анонимного.

1

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

0

IEnumerable вместо.

По словам МСДНДинамический тип позволяет операциям, в которых это происходит, обходить проверку типов во время компиляции. Вместо этого эти операции разрешаются во время выполнения. Динамический тип упрощает доступ к COM-API, таким как API-интерфейсы Office Automation, а также к динамическим API, таким как библиотеки IronPython, и к объектной модели документа HTML (DOM). "

http://msdn.microsoft.com/en-us/library/dd264741.aspx

5

Создайте для этого настоящий класс. Тот'S предпочтительное решение.Сделайте ваш метод возвратаdynamic вместоobject, Проблема в том, что вы теряете проверку времени компиляции кода, который использует результат этого метода.

Похожие вопросы