Сегодня я думал, что было бы аккуратно создавать анонимный объект, который является типом некоторого интерфейса, и я видел на 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; }
}
}