Can I specify interfaces when I declare a member?¿Hay algún lenguaje estático de tipo pato?
Después de pensar en esta cuestión por un tiempo, se me ocurrió que un lenguaje de pato estático podría funcionar. ¿Por qué las clases predefinidas no pueden vincularse a una interfaz en tiempo de compilación? Ejemplo:
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.
¿Conoce algún idioma que admita esta función? ¿Sería útil en Java o C#? ¿Es fundamentalmente defectuoso de alguna manera? Entiendo que podría subclase MyClass e implementar la interfaz o usar el patrón de diseño del Adaptador para lograr lo mismo, pero esos enfoques simplemente parecen un código repetitivo innecesario.
Gracias. Acabo de empezar a aprender Haskell hace una semana y hasta ahora parece bastante genial. Sin embargo, es un poco una curva de aprendizaje; nunca antes había llegado a los idiomas funcionales. De todos modos, su sistema de inferencia de tipo es muy parecido a lo que me refiero. – Cybis
C# parece tener inferencia Tipo. Por ejemplo, este artículo habla de eso. http://www.developer.com/net/csharp/article.php/3601646/Go-Inside-C-30s-Type-Inference-Process.htm –