во всем решении.

тим, у меня есть 2 метода расширения для строки, в 2 разных пространствах имен:

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

Эти методы только для примера, они на самом деле ничего не делают.

Теперь давайте рассмотрим этот кусок кода:

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 ?
        }
    }
}

Вопрос:

Я знаю, что будет выбран только один из методов расширения.
Какой это будет? и почему ?

Редактировать:

Это также беспокоит меня, но не так сильно, потому что это статический метод в статическом классе в конце концов:

Как я могу выбрать определенный метод из определенного пространства имен?
Обычно я бы использовалNamespace.ClassNAME.Method() ... Но это только превосходит саму идею методов расширения. И я не думаю, что вы можете использоватьVariable.Namespace.Method()

Ответы на вопрос(4)

Ваш ответ на вопрос