Extension Method in C# 2.0

前端 未结 4 727
小蘑菇
小蘑菇 2020-12-06 17:28

What namespace do I need to get my extension to work

Here is my Extension Method


using System;
using System.Collections.Generic;
using System.Web;
using          


        
相关标签:
4条回答
  • 2020-12-06 17:58

    Extension methods will not work in C# 2 because they rely on the C# 3 compiler. The C# 3 compiler knows how to do the translation from this:

    foo.Bar()
    

    to this:

    ExtensionClass.Bar(foo)
    
    0 讨论(0)
  • 2020-12-06 18:15

    As JS said, C# 2.0 doesn't have extension methods.

    Also that extension method would be defined as:

    public static DataTable ToDataTable(this IDataReader reader)
    

    Try calling it like:

    DataReaderExtensions.ToDataTable(
       cust.GetCustomerOrderSummary((string)Session["CustomerNumber"])
       )
    
    0 讨论(0)
  • 2020-12-06 18:19

    You can't. C# 2.0 doesn't have extension methods at all. You can use extension methods from C# 3.0 in Visual Studio 2008 targeting .NET 2.0 as described in my "C#/.NET versions" article but you can't persuade a C# 2.0 compiler to act as if it understands what extension methods are.

    0 讨论(0)
  • 2020-12-06 18:19

    The tags say .NET 2.0; If you are using C# 3.0 (i.e. VS 2008) and targetting .NET 2.0, you can do this by declaring the ExtensionAttribute - or (easier) just reference LINQBridge.

    namespace System.Runtime.CompilerServices
    {
        [AttributeUsage(AttributeTargets.Assembly | AttributeTargets.Class |
            AttributeTargets.Method)]
        public sealed class ExtensionAttribute : Attribute { }
    }
    

    With this in place, extension methods will work in .NET 2.0 with C# 3.0.

    0 讨论(0)
提交回复
热议问题