DefaultParameterValue в C # - PullRequest
       19

DefaultParameterValue в C #

1 голос
/ 13 октября 2009

Я хотел бы передать DateTime в качестве DefaultParameterValue моему методу, используя класс DefaultParameterValueAttribute в .net Framework. Есть ли способ сделать это?

Я могу передать строку, логическое значение и другие типы кода, приведенные ниже. Я попытался передать Nullable DateTime, но не сработало.

 object SomeMethod([Optional, DefaultParameterValue("")]string param1,
                  [Optional, DefaultParameterValuefalse)] bool isValid,
                  [Optional, DefaultParameterValue(null)] Nullable<DateTime> valuationDate
      );

Ответы [ 2 ]

3 голосов
/ 13 октября 2009

До C # 4.0 вам лучше всего делать перегрузки, которые вызывают «реальную» версию:

public void Foo() { Foo(123,"abc");}
public void Foo(int a) { Foo(a, "abc");}
public void Foo(string b) {Foo(123, b);}
public void Foo(int a, string b) { ... your code ... }

В C # 4.0 это будет просто:

public void Foo(int a = 123, string b = "abc") { ... }

Вызывается, например:

Foo();
Foo(456);
Foo(b: "def");
2 голосов
/ 13 октября 2009

VB.NET поймет это и будет соблюдать ваши значения по умолчанию, а C # - нет.

Это объясняется документацией, которая описывает, как это зависит от языка, используемого для компиляции кода, который вызывает декорированный метод. (http://msdn.microsoft.com/en-us/library/system.runtime.interopservices.defaultparametervalueattribute.aspx)

Эта проблема будет решена в следующей версии C # .NET 4.0.

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