Атрибут параметра .Net, чтобы сделать именованный / необязательный параметр видимым только для внутреннего / частного? - PullRequest
2 голосов
/ 03 января 2011

Из любопытства, есть ли способ написать метод, например, такой:

public static MyType Parse(string stringRepresentation, [Internal] bool throwException = true)
{
// parsing logic here that conditionally throws an exception or returns null ...
}

public static MyType TryParse(string stringRepresentation)
{
return this.Parse(stringRepresentation, true);
}

Я хочу сократить внутреннюю избыточность кода, но оставаться совместимым, например, с сигнатурами метода BCL для (Try) Parse() но если бы компилятор c # мог в этом случае сгенерировать второй, внутренний метод, который был бы хорош.

Это уже как-то возможно?Пока ничего не смог найти.

Ответы [ 2 ]

3 голосов
/ 03 января 2011

Я не знаю, что вы можете, но разве это не даст вам тот же результат?

public MyType Parse(string stringRepresentation)
{
    return this.Parse(stringRepresentation, true);
}

internal MyType Parse(string stringRepresentation, bool throwException = true)
{
    // parsing logic here that conditionally throws an exception or returns null ...
}
1 голос
/ 12 июля 2012

Я знаю, что это немного поздний ответ, но он может помочь кому-то еще.

Вы можете уменьшить свой класс атрибутов с помощью AttributeTargets.Parameter ( здесь ссылка MSDN ), которая именно то, что вы ищете.

Пример атрибута:

[AttributeUsage(AttributeTargets.Parameter, AllowMultiple = false)]
public class InternalAttribute : Attribute
{
    // attribute code goes here
}

Использование атрибута:

public void Foo([Internal] type_of_parameter parameter_name)
{
      //code
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...