Может ли класс быть псевдонимом в C #? - PullRequest
3 голосов
/ 13 декабря 2010

Можно ли предоставить псевдоним для класса в пространстве имен?И если нет, то почему бы и нет?

Например, если бы у меня было несколько библиотек вещей, которые были получены из автономного, но названного базового класса, но я хотел бы присвоить ему псевдоним "BaseClass", сохраняя при этом его фактический классname (т. е. «HtmlControl»).

Тогда потребители всегда могут прийти и перейти от HtmlControls.BaseClass, не выясняя, из какого класса он на самом деле.

Ответы [ 4 ]

4 голосов
/ 13 декабря 2010
using SomeClass = Large.Namespace.Other.FunkyClass;

class Foo : SomeClass
{
}
1 голос
/ 13 декабря 2010

Там действительно нет идеального способа сделать это в C # /. NET. То, что вы можете сделать, это иметь открытый BaseClass, который наследуется от внутреннего класса. Вы можете изменить это наследование внутренне, не нарушая ваших потребителей, пока интерфейс к классу остается неизменным.

public class PublicBaseClass : SomeInternalClass {

}

Потребители наследуют от PublicBaseClass, и пока вы осторожны, вы можете изменить то, что SomeInternalClass, как вам угодно.

1 голос
/ 13 декабря 2010

Вы можете создать фиктивный класс, который просто наследует HtmlControl без добавления каких-либо других функций:

public class BaseClass : HtmlControl {}
0 голосов
/ 13 декабря 2010

Самое близкое, что я знаю, это настроить оператор using:

using BaseClass = HtmlControls.BaseClass;

Это обычно используется, чтобы избежать неоднозначности между классами с одинаковыми именами в разных используемых пространствах имен без необходимости полностью квалифицироватьДругой.Ваши разработчики должны будут включать его в каждый файл кода, так что, вероятно, это не очень хорошее решение для того, что вы делаете.,На определенном уровне компилятор должен знать, что и где находится родительский класс, то есть он должен быть статически определен где-то в коде.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...