C#泛型抽象方法 [英] C# Abstract Generic Method

查看:556
本文介绍了C#泛型抽象方法的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

C#.NET 3.5

C#, .net 3.5

我想创建一个具有通用方法的基类。从它继承的类应指定方法的类型(S)。

I am trying to create a base class that has a generic method. Classes that inherit from it should specify the method's type(s).

此的前提是用于创建管理过滤类。

The premise for this is for creating classes that manage filtering.

所以我有:

 public abstract class FilterBase {
   //NEED Help Declaring the Generic method for GetFilter
   //public abstract IQueryable<T> GetFilter<T>(IQueryable<T> query);
 }

 public class ProjectFilter:FilterBase {
   public IQueryable<Linq.Project> GetFilter(IQueryable<Linq.Project> query) {
     //do stuff with query
     return query;
   }
 }

 public class ProjectList {
   public static ProjectList GetList(ProjectFilter filter) {
     var query = //....Linq code...

     query = filterCriteria.GetFilter(query); 

   }

 }



认为这是简单的东西,但我不能得到的用getFilter抽象方法FilterBase语法正确。

Think it is something simple, but I can't get the syntax right in FilterBase for the GetFilter abstract method.

修改

在理想情况下,想只保留方法,通用的,这个类。如果不能,那么请让我知道..

Ideally, would like to keep only the method as generic and not the class. If not possible, then please let me know..

推荐答案

请在FilterBase类本身一般。

Make the FilterBase class itself generic.

public abstract class FilterBase<T>
{
    public abstract IQueryable<T> GetFilter(IQueryable<T> query);
}

这将使你创建你ProjectFilter类是这样的:

This would enable you to create your ProjectFilter class like this:

public class ProjectFilter : FilterBase<Linq.Project>
{
    public override IQueryable<Linq.Project> GetFilter(IQueryable<Linq.Project> query)
    {
        //do stuff with query
        return query;
    }
}

这篇关于C#泛型抽象方法的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆