求C#大神指点。重写抽象方法一直提示没有找到合适的方法重写。基类是有该方法的,拼写也没有错,小弟我快吐血了

求C#大神指点。重写抽象方法一直提示没有找到合适的方法重写。基类是有该方法的,拼写也没有错,我快吐血了
基类:

public abstract class SolrSearcher<Record, Result> : Searcher<Result>
    {
        protected SolrSearcher();

        protected abstract string SolrCoreName { get; }

        protected virtual QueryOptions BuildQueryOptions(SearchCondition condition);
        protected abstract Result TransformSolrQueryResult(SolrQueryResults<Record> solrQueryResult, SearchCondition condition);
    }

实现类方法:

 public class WeaponrySearcher : SolrSearcher<Weaponry, WeaponrySearchResult>
    {
          new protected QueryOptions BuildQueryOptions(SearchCondition condition)
         {
                 //此方法硬要说返回值和基类不同,不得已才用了new
          }
          protected override WeaponrySearchResult TransformSolrQueryResult(SolrQueryResults<Weaponry> solrQueryResult, SearchCondition condition)
            {
                     / /省略掉了
            }
}

错误 2 “DefenderKingdom.Service.WeaponrySearcher”不实现继承的抽象成员“DK.Utility.DataAccess.SearchEngine.Solr.SolrSearcher<DefenderKingdom.Entity.Weaponry,DefenderKingdom.Entity.WeaponrySearchResult>.TransformSolrQueryResult(SolrNet.SolrQueryResults`1<DefenderKingdom.Entity.Weaponry>, DK.Utility.DataAccess.SearchEngine.SearchCondition)”
错误 3 “DefenderKingdom.Service.WeaponrySearcher.BuildQueryOptions(DK.Utility.DataAccess.SearchEngine.SearchCondition)”: 返回类型必须是“SolrNet.Commands.Parameters.QueryOptions”才能与重写成员“DK.Utility.DataAccess.SearchEngine.Solr.SolrSearcher<DefenderKingdom.Entity.Weaponry,DefenderKingdom.Entity.WeaponrySearchResult>.BuildQueryOptions(DK.Utility.DataAccess.SearchEngine.SearchCondition)”匹配
错误 4 “DefenderKingdom.Service.WeaponrySearcher.TransformSolrQueryResult(SolrNet.SolrQueryResults<DefenderKingdom.Entity.Weaponry>, DK.Utility.DataAccess.SearchEngine.SearchCondition)”: 没有找到适合的方法来重写

我也是很醉
------解决思路----------------------
我用的是vs2012,  .net framewrok版本是4.5.1
------解决思路----------------------
是啊,改成下面的一样编译通过

 public abstract class SolrSearcher<TRecord, TResult>
    {
        protected virtual QueryOptions BuildQueryOptions(SearchCondition condition)
        {
            return null;
        }
        protected abstract TResult TransformSolrQueryResult(SolrQueryResults<TRecord> solrQueryResult, SearchCondition condition);
    }
------解决思路----------------------
基类和子类是不是引用了两个版本不同的DLL,或者子类的代码中引用了错误的命名空间,而这个错误的命名空间下恰好也有一个QueryOptions类型。
用VS的Quick Action可以帮助你排除这个问题,首先在子类中注释掉基类虚方法的实现,然后将光标移到子类声明这行基类的描述处,按Alt+Shift+F10会弹出Quick Action菜单,选择Implement abstract class XXX,这样VS会自动生成实现基类虚方法的签名,此时生成一次试试还会不会报错。