我有一个用VB.NET编写的方法。它看起来像这样:
Shared Sub SomeMethod(ByVal Id As Guid,
Optional ByVal str1 As String = "foo",
Optional ByVal str2 As String = "")
我想从C#3.0调用此方法,我希望它使用其默认参数。我尝试传递System.Reflection.Missing.Value
,但我无法将其转换为String。
有没有办法做到这一点?
提前感谢您的帮助。
答案 0 :(得分:9)
不,在C#3中,您只需传递所有参数即可。 C#4将具有可选和命名的参数。
你当然可以创建一些重载变体,但这只是一个近似值。
答案 1 :(得分:2)
不使用C#4.0(增加了对可选参数的支持),你不能使用它们;如果您通过FxCop运行代码,您将看到专门标记的可选参数,因为它们无法被C#使用。
答案 2 :(得分:0)
如果要检索可选参数的值,可以使用反射,此信息存储在相应参数的自定义属性中