Я был готов к тому, что метод Руби принудительно использует интерфейсы с динамической типизацией, проверив наличие методов / свойств, которые удовлетворяют интерфейсу.
Каким образом это в целом просто лучший принцип проектирования, чем использование интерфейсов? Какие плюсы / минусы. Например, вы можете реализовать ту же концепцию в C #, но я не уверен, что она будет иметь то же значение,
public class Foo
{
public Foo(dynamic _obj)
{
MethodInfo[] methods= _obj.GetType().GetMethods();
if (!methods.Any(x => x.Name == "SomeRequiredMethod")
{
throw new ArgumentException("Object does not meet interface requirements.");
}
}
// proceed with functionality that requires the method
}
И, конечно, вы можете расширить это, чтобы проверить больше, чем просто имя, например, подпись, тип возвращаемого значения и т. Д.
Мысли