Кроме того, для статических классов вы можете реализовать нечто подобное с помощью свежего C # 6.0 , используя статическую функцию .
Рассмотрим:
namespace SomeLogic1
{
public static class Util
{
public static int Bar1()
{
return 1;
}
}
}
namespace SomeLogic2
{
public static class Util
{
public static int Bar2()
{
return 2;
}
}
}
namespace GeneralStuff
{
using SomeLogic1;
using SomeLogic2;
public class MainClass
{
public MainClass()
{
// Error CS0104
// 'Util' is an ambiguous reference between 'SomeLogic1.Util' and 'SomeLogic2.Util'
var result = Util.Bar1() + Util.Bar2();
}
}
}
Правильно, что не компилируется, сообщение об ошибке ясно. Чтобы исправить ситуацию, вы можете напрямую указать пространства имен (но, насколько я понимаю, вы не хотите этого):
namespace GeneralStuff
{
public class MainClass
{
public MainClass()
{
var result = SomeLogic1.Util.Bar1() + SomeLogic2.Util.Bar2();
}
}
}
ИЛИ вы можете применить , используя статическую функцию следующим образом:
namespace GeneralStuff
{
using static SomeLogic1.Util;
using static SomeLogic2.Util;
public class MainClass
{
public MainClass()
{
var result = Bar1() + Bar2();
}
}
}
Возможно, это нормально делать для некоторых классов помощников / утилит. Но частичные классы - не тот путь, как заметили другие.