Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Extension Method in C# 2.0

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 System.Data;

namespace MyUtilities
{
    public static class DataReaderExtensions
    {
        public static DataTable ToDataTable(IDataReader reader)
        {
            DataTable table = new DataTable();
            table.Load(reader);
            return table;
        }
    }
}

When I try to use it in like this

Session["Master"] = cust.GetCustomerOrderSummary((string)Session["CustomerNumber"]).ToDataTable();

it doesn't work. This is .net 2.0

like image 865
Saif Khan Avatar asked Apr 01 '09 20:04

Saif Khan


People also ask

What is extension method in MVC?

What is extension method? Extension methods in C# are methods applied to some existing class and they look like regular instance methods. This way we can "extend" existing classes we cannot change. Perhaps the best example of extension methods are HtmlHelper extensions used in ASP.NET MVC.

Why extension methods are static?

Extension methods are a special kind of static method, but they are called as if they were instance methods on the extended type." Essentially, an extension method is a special type of a static method and enable you to add functionality to an existing type even if you don't have access to the source code of the type.

Why do we use extension?

An extension adds features and functions to a browser. It's created using familiar web-based technologies — HTML, CSS, and JavaScript. It can take advantage of the same web APIs as JavaScript on a web page, but an extension also has access to its own set of JavaScript APIs.

Where are extension methods used?

An extension method must be defined in a top-level static class. An extension method with the same name and signature as an instance method will not be called. Extension methods cannot be used to override existing methods. The concept of extension methods cannot be applied to fields, properties or events.

What is extension method with example?

An extension method is actually a special kind of static method defined in a static class. To define an extension method, first of all, define a static class. For example, we have created an IntExtensions class under the ExtensionMethods namespace in the following example.


3 Answers

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.

like image 133
Jon Skeet Avatar answered Sep 24 '22 03:09

Jon Skeet


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.

like image 45
Marc Gravell Avatar answered Sep 20 '22 03:09

Marc Gravell


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)
like image 20
Andrew Hare Avatar answered Sep 23 '22 03:09

Andrew Hare