Extension methods conflict

Posted by Yochai Timmer on Stack Overflow See other posts from Stack Overflow or by Yochai Timmer
Published on 2011-03-12T15:55:43Z Indexed on 2011/03/12 16:10 UTC
Read the original article Hit count: 351

Lets say I have 2 extension methods to string, in 2 different namespaces:

namespace test1
{
    public static class MyExtensions
    {
        public static int TestMethod(this String str)
        {
            return 1;
        }
    } 
}

namespace test2
{
    public static class MyExtensions2
    {
        public static int TestMethod(this String str)
        {
            return 2;
        }
    } 
}

These methods are just for example, they don't really do anything.

Now lets consider this piece of code:

using System;
using test1;
using test2;

namespace blah {
    public static class Blah {
        public Blah() {
        string a = "test";
        int i = a.TestMethod(); //Which one is chosen ?
        }
    }
}

I know that only one of the extension methods will be chosen. Which one will it be ? and why ?
How can I choose a certain method from a certain namespace ?

Edit:

Usually I'd use Namespace.ClassNAME.Method() ... But that just beats the whole idea of extension methods. And I don't think you can use Variable.Namespace.Method()

© Stack Overflow or respective owner

Related posts about c#

Related posts about methods