相关疑难解决方法(0)

未针对动态泛型类型解析方法

我有这些类型:

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)

c# generics dynamic

11
推荐指数
2
解决办法
3911
查看次数

标签 统计

c# ×1

dynamic ×1

generics ×1