Какой синтаксис мне нужен, чтобы метод доступа к универсальным свойствам C # имел то же имя, что и его тип? - PullRequest
0 голосов
/ 16 января 2019

В C # мне нравится реализовывать свойства get / set методы, у которых name совпадает с именем возвращенного / примененного типа . Это меня устраивает, так как это означает, что мне не нужно придумывать собственное новое имя для метода. Например:

class MyClass
{
    public XmlDocument XmlDocument { get; set: }
    ...

Мой вопрос - как бы я выразил вышеупомянутое, когда MyClass является родовым классом? Я пробовал это:

class MyClass<T>
{
    public T T { get; set; }
    ...

Но компилятор C # выдает ошибку:

Ошибка CS0102 Тип «MyClass» уже содержит определение для 'T'

Я также пытался nameof(T) и @T указать имя метода, но они вызывали разные ошибки компилятора.

Возможно ли то, что я хочу сделать? Если да, какой синтаксис я должен использовать для имени средства доступа к свойству?

1 Ответ

0 голосов
/ 16 января 2019

Нет, имя базового метода / свойства не может быть основано на типе, указанном в качестве аргумента.

Вы можете создавать такие классы, используя шаблоны (например, t4) или код во время выполнения.

Примечания:

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