Вы можете рассмотреть этот отчет об ошибке, однако мне любопытно, если я здесь ужасно не прав, или если есть объяснение от Эрика или кого-то еще в Microsoft.
Update
Теперь это размещено как ошибка в Microsoft Connect.
Описание
Рассмотрим следующий класс:
class A
{
public object B {
set { }
}
}
Здесь A.B
является только для записи, но в остальном это свойство отлично.
Теперь представьте, что мы назначим его внутри выражения:
Expression<Func<A>> expr =
() => new A {
B = new object { }
};
Этот код делает компилятор С# ( 3,5.30729.4926 и 4.0.30319.1).
Внутренняя ошибка компилятора (0xc0000005 по адресу 013E213F): вероятным виновником является "BIND".
и сбой.
Однако просто заменяя синтаксис инициализатора объекта ({ }
) конструктором (( )
) компилирует только тонкий.
Полный код для воспроизведения:
using System;
using System.Linq.Expressions;
class Test {
public static void Main()
{
Expression<Func<A>> expr =
() => new A {
B = new object { }
};
}
}
class A {
public object B { set { } }
}
(И да, я ударил его, работая над реальным проектом.)