Назначить интерфейсный массив инициализатора компиляции, но почему?
Сегодня я думал, что было бы неплохо создать анонимный объект, который является типом некоторого интерфейса, и я видел на SO, что я не только один.
Прежде чем я начал проверять, что происходит, я написал код, подобный приведенному ниже. К моему удовольствию это скомпилировано, я использую .net Framework 4, и я знаю, что нет никакого способа сделать интерфейс реализации анонимных объектов, но я не видел жалоб от VS по поводу этого кода.
Еще лучше, когда я ставлю фигурные скобки, intelisense находит «Свойство» моего интерфейса, как если бы это был действительный код.
Почему эта часть компилируется, и при запуске она дает исключение нулевой ссылки?
namespace test
{
class Program
{
static void Main(string[] args)
{
Holder holder = new Holder { someInterface = { Property = 1 } };
Console.WriteLine(holder.someInterface.Property);
}
}
class Holder
{
public ISomeInterface someInterface{get; set;}
}
interface ISomeInterface
{
int Property { get; set; }
}
}