Для этого есть обходной путь, но вам это может не понравиться.
Вместо использования namespace
для охвата ваших классов используйте public static partial class
:
До:
namespace MyCompany.Foo {
class Bar { }
public class Baz { }
}
После:
namespace MyCompany {
public static partial class Foo {
private class Bar { }
public class Baz { }
}
}
Эта конструкция, как и пространство имен, может охватывать несколько файлов в одном проекте.Но, в отличие от пространства имен, оно не может «убежать» из вашего проекта (другие проекты не могут определять других участников внутри Foo
).
Существует дополнительное преимущество, заключающееся в том, что вы можете иметь служебные методы, которых некласс для кода внутри Foo
.
Недостатком является то, что для использования ваших не закрытых классов за пределами вашего поддельного пространства имен вы должны ссылаться на них внутри Foo
:
using MyCompany;
// ...
var baz = new Foo.Baz();
Это можно уменьшить, используя псевдоним для класса:
using Baz = MyCompany.Foo.Baz;
// ...
var baz = new Baz();
Но вам придется делать это для каждого не частного класса, который вы хотите использовать.
ОБНОВЛЕНИЕ
Интересно отметить, что C # 6 будет иметь статическое использование операторов , что могло бы эффективно улучшить это предложение для использования public static partial class
в качестве «модуля»,Вы просто «используете» «модуль» для прямого доступа к его типам.
Надеюсь, он будет работать так:
using MyCompany.Foo;
// ...
var baz = new Baz();
Так же, как если бы Foo
было пространством имен. ** 1043