我有这些类型:
public class GenericDao<T>
{
public T Save(T t)
{
return t;
}
}
public abstract class DomainObject {
// Some properties
protected abstract dynamic Dao { get; }
public virtual void Save() {
var dao = Dao;
dao.Save(this);
}
}
public class Attachment : DomainObject
{
protected dynamic Dao { get { return new GenericDao<Attachment>(); } }
}
Run Code Online (Sandbox Code Playgroud)
然后,当我运行此代码时,它失败并出现RuntimeBinderException:'GenericDAO <Attachment>的最佳重载方法匹配.Save(附件)'有一些无效的参数
var obj = new Attachment() { /* set properties */ };
obj.Save();
Run Code Online (Sandbox Code Playgroud)
我已经验证在DomainObject.Save()中"这个"肯定是附件,所以错误并没有真正意义.任何人都可以解释为什么这个方法没有解决?
更多信息 - 如果我更改DomainObject.Save()的内容以使用反射,它会成功:
public virtual void …Run Code Online (Sandbox Code Playgroud)