DefaultParameterValue в C #

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

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

 object SomeMethod([Optional, DefaultParameterValue("")]string param1,
                  [Optional, DefaultParameterValuefalse)] bool isValid,
                  [Optional, DefaultParameterValue(null)] Nullable<DateTime> valuationDate
      );
13.10.2009 01:49:48
2 ОТВЕТА
РЕШЕНИЕ

До 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");
3
13.10.2009 03:55:32
Спасибо за ваш ответ. Я попробую это так.
dcmovva 13.10.2009 13:20:52

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

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

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

2
13.10.2009 01:55:18
Это возможно в C # 4.0, но без использования того же синтаксиса.
Scott Dorman 13.10.2009 01:57:07