通过检查是否存在满足接口的方法/属性,我已经准备好使用 Ruby 强制执行带有动态类型的接口的方法。
总体而言,这在哪些方面比使用接口更好的设计原则?有什么优点/缺点。例如,您可以在 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
}
当然,您可以扩展它来检查不仅仅是名称,如签名、返回类型等。
想法?