Хорошо. Я прочитал сообщение this, и я смущен тем, как это применимо к моему примеру (ниже).
class Foo
{
public static implicit operator Foo(IFooCompatible fooLike)
{
return fooLike.ToFoo();
}
}
interface IFooCompatible
{
Foo ToFoo();
void FromFoo(Foo foo);
}
class Bar : IFooCompatible
{
public Foo ToFoo()
{
return new Foo();
}
public void FromFoo(Foo foo)
{
}
}
class Program
{
static void Main(string[] args)
{
Foo foo = new Bar();
// should be the same as:
// var foo = (new Bar()).ToFoo();
}
}
Я внимательно прочитал сообщение, с которым я связался. Я прочитал раздел 10.10.3 спецификации С# 4. Все приведенные примеры относятся к дженерикам и наследованию, где это не указано.
Может кто-нибудь объяснить, почему это не разрешено в контексте этого примера?
Пожалуйста, никаких сообщений в форме "потому что спецификация говорит так" или просто цитирует спецификацию. Очевидно, спецификация недостаточна для моего понимания, иначе я бы не опубликовал этот вопрос.
Изменить 1:
Я понимаю, что это запрещено, потому что есть против него правила. Я смущен, почему это не разрешено.