小编Tho*_*mas的帖子

方法组的C#扩展方法

我想为方法实现扩展方法.请考虑以下代码示例(http://dotnetfiddle.net/HztiOo):

using System;
using System.Collections.Generic;

public class Program
{
    public static void Main()
    {
        A a = new A();
        // Noticed that Next() is called twice
        Console.WriteLine(a.Next(1));
        Console.WriteLine(a.Next(1));

        // Works
        var withCache = ((Func<int,int>)a.Next).AddCaching();
        withCache = new Func<int,int>(a.Next).AddCaching();
        withCache = ExtensionMethods.AddCaching<int,int>(a.Next);

        // Doesn't work :(
        // withCache = a.Next.AddCaching<int,int>();
        // Func<int,int> withCache = a.Next.AddCaching();

        // Notice that Next() is only called once
        Console.WriteLine(withCache(1));
        Console.WriteLine(withCache(1));
    }
}

public class A
{
    public int Next(int n)
    {
        Console.WriteLine("Called Next("+n+")");
        return …
Run Code Online (Sandbox Code Playgroud)

c# extension-methods

6
推荐指数
1
解决办法
1370
查看次数

标签 统计

c# ×1

extension-methods ×1