为了账号安全,请及时绑定邮箱和手机立即绑定

扩展方法必须在非通用静态类中定义

扩展方法必须在非通用静态类中定义

MM们 2019-10-17 11:19:12
我收到错误消息:扩展方法必须在非通用静态类中定义在线上:public class LinqHelper这是基于Mark Gavells代码的帮助程序类。我对这个错误的含义感到非常困惑,因为我确信当我在星期五离开它时,它可以正常工作!using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Linq.Expressions;using System.Reflection;/// <summary>/// Helper methods for link/// </summary>public class LinqHelper{    public static IOrderedQueryable<T> OrderBy<T>(this IQueryable<T> source, string property)    {        return ApplyOrder<T>(source, property, "OrderBy");    }    public static IOrderedQueryable<T> OrderByDescending<T>(this IQueryable<T> source, string property)    {        return ApplyOrder<T>(source, property, "OrderByDescending");    }    public static IOrderedQueryable<T> ThenBy<T>(this IOrderedQueryable<T> source, string property)    {        return ApplyOrder<T>(source, property, "ThenBy");    }    public static IOrderedQueryable<T> ThenByDescending<T>(this IOrderedQueryable<T> source, string property)    {        return ApplyOrder<T>(source, property, "ThenByDescending");    }    static IOrderedQueryable<T> ApplyOrder<T>(IQueryable<T> source, string property, string methodName)    {        string[] props = property.Split('.');        Type type = typeof(T);        ParameterExpression arg = Expression.Parameter(type, "x");        Expression expr = arg;        foreach (string prop in props)        {            // use reflection (not ComponentModel) to mirror LINQ            PropertyInfo pi = type.GetProperty(prop);            expr = Expression.Property(expr, pi);            type = pi.PropertyType;        }        Type delegateType = typeof(Func<,>).MakeGenericType(typeof(T), type);        LambdaExpression lambda = Expression.Lambda(delegateType, expr, arg);
查看完整描述

3 回答

?
噜噜哒

TA贡献1784条经验 获得超7个赞

更改


public class LinqHelper


public static class LinqHelper

创建扩展方法时,需要考虑以下几点:


其限定一个扩展方法必须是类non-generic,static和non-nested

每个扩展方法都必须是一个static方法

扩展方法的第一个参数应使用this关键字。


查看完整回答
反对 回复 2019-10-17
?
PIPIONE

TA贡献1829条经验 获得超9个赞

static在类声明中添加关键字:


// this is a non-generic static class

public static class LinqHelper

{

}


查看完整回答
反对 回复 2019-10-17
  • 3 回答
  • 0 关注
  • 796 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信