Скажем, у меня есть 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 ?
}
}
}
Вопрос:
Я знаю, что будет выбран только один из методов расширения.
Кто это будет? и почему?
Edit:
Это также беспокоит меня, но не так много, потому что это статический метод в статическом классе:
Как я могу выбрать определенный метод из определенного пространства имен?
Обычно я использую Namespace.ClassNAME.Method()
... Но это просто превосходит всю идею методов расширения. И я не думаю, что вы можете использовать Variable.Namespace.Method()