Почему следующий код не компилируется? Это ошибка компилятора или языковая особенность? Какой лучший обходной путь?
type A() as this =
let a = this.GetTypedObject<int>() // a
let b = this.GetTypedObject<string>() // b
member this.GetTypedObject<'T>() =
Unchecked.defaultof<'T>
Unchecked.defaultof <'T> используется только для примера, вместо него может использоваться любой вызов функции или конструктора.
Компилятор говорит, что код становится менее общим в строке (a) и отказывается компилировать строку (b).
Я не могу дать точные сообщения компилятора, потому что они у меня есть на русском языке:).
Превращение метода GetTypedObject () в привязку let и удаление <'T> заканчиваются другим предупреждением компилятора, которое мне тоже не нравится. Единственный найденный мной способ - переместить GetTypedObject <'T> () в базовый класс и сделать его общедоступным. Заранее спасибо ...