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

我收到错误消息:


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


在线上:


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);

MM们
浏览 797回答 3
3回答

噜噜哒

更改public class LinqHelper至public static class LinqHelper创建扩展方法时,需要考虑以下几点:其限定一个扩展方法必须是类non-generic,static和non-nested每个扩展方法都必须是一个static方法扩展方法的第一个参数应使用this关键字。

PIPIONE

static在类声明中添加关键字:// this is a non-generic static classpublic static class LinqHelper{}
打开App,查看更多内容
随时随地看视频慕课网APP