Могу ли я указать интерфейсы при объявлении члена? а>
Поразмыслив над этим вопросом какое-то время, мне пришло в голову, что язык с статической типизацией может действительно работать. Почему предопределенные классы не могут быть привязаны к интерфейсу во время компиляции? Пример:
public interface IMyInterface
{
public void MyMethod();
}
public class MyClass //Does not explicitly implement IMyInterface
{
public void MyMethod() //But contains a compatible method definition
{
Console.WriteLine("Hello, world!");
}
}
...
public void CallMyMethod(IMyInterface m)
{
m.MyMethod();
}
...
MyClass obj = new MyClass();
CallMyMethod(obj); // Automatically recognize that MyClass "fits"
// MyInterface, and force a type-cast.
Знаете ли вы какие-либо языки, поддерживающие такую функцию? Было бы полезно на Java или C #? Есть ли в нем какие-то фундаментальные изъяны? Я понимаю, что вы можете создать подкласс MyClass и реализовать интерфейс или использовать шаблон проектирования адаптера для достижения той же цели, но эти подходы кажутся ненужным шаблонным кодом.