using System;
using System.Linq;
using System.Console;
class Asd
{
public Meth(_param : object) : void
{
def клон = MemberwiseClone();
def свва_мклоны = GetType()
// Получим св-ва
.GetProperties()
// ... и интерфейсы ICloneable
.Select( свво => (свво, свво.PropertyType.GetInterface("ICloneable")) )
// ... только те, которые могут быть записаны, у которых есть интерфейс IClonable и значение св-ва не равно null
.Where( (свво, иклонабле) => иклонабле != null && свво.CanWrite && свво.GetValue(клон, null) != null ) // <- Error
// Возрат св-в и метода Clone
.Select( (свво, иклонабле) => (свво, иклонабле.GetMethod("Clone")) )
;
}
}
D:\Work\Nemerle\Test4\Test4\Main.n(16,54): error : there is no member named `CanWrite' in (System.Reflection.PropertyInfo- * ?) with type ?
D:\Work\Nemerle\Test4\Test4\Main.n(16,71): error : there is no member named `GetValue' in (System.Reflection.PropertyInfo- * ?) with type ?
D:\Work\Nemerle\Test4\Test4\Main.n(16,71): error : Cannot implicitly convert type 'bool+' to 'bool'.
Ладно, исправляем, но на вводе квадратной скобки студия мертво вешается.
Ладно, вводим скобки в обратном порядке. Вроде все норм. Но какие-то изменения в рабочем проекте, абсолютно не касающиеся этого кода приводят к следующему:
В выводе точно такая же ошибка — бикоз, двоеточие и пустота...
Если бы проблема была только в этом. Я ее обошел объявляя в Where параметр лямбды как одну переменную-кортеж. В исходном сообщении это есть. Но что делать с этим (это тоже есть в исходном сообщении):
Но какие-то изменения в рабочем проекте, абсолютно не касающиеся этого кода приводят к следующему:
Здравствуйте, DarthSidius, Вы писали:
DS>Если бы проблема была только в этом. Я ее обошел объявляя в Where параметр лямбды как одну переменную-кортеж. В исходном сообщении это есть. Но что делать с этим (это тоже есть в исходном сообщении):...
Что-бы что-то сказать, надо наблюдать это явление воочию.
Универсальный совет может быть один. Если что-то выглядит странно, нажми Shift+Alt+R. Это заставит интеграцию пересоздать дерево типов проекта. После того как в статусной строке появится надпись "Build types tree is completed." подведи мышку к этому месту. Возможно это поможет.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, VladD2, Вы писали:
VD>Универсальный совет может быть один. Если что-то выглядит странно, нажми Shift+Alt+R. Это заставит интеграцию пересоздать дерево типов проекта. После того как в статусной строке появится надпись "Build types tree is completed." подведи мышку к этому месту. Возможно это поможет.
Сделал так. Все точно также как описано в предыдущем сообщении.