如何使用可选参数从C#调用VB.NET编写的方法

时间:2010-03-03 13:03:27

标签: c# .net vb.net

我有一个用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。

有没有办法做到这一点?

提前感谢您的帮助。

3 个答案:

答案 0 :(得分:9)

不,在C#3中,您只需传递所有参数即可。 C#4将具有可选和命名的参数。

你当然可以创建一些重载变体,但这只是一个近似值。

答案 1 :(得分:2)

不使用C#4.0(增加了对可选参数的支持),你不能使用它们;如果您通过FxCop运行代码,您将看到专门标记的可选参数,因为它们无法被C#使用。

答案 2 :(得分:0)

如果要检索可选参数的值,可以使用反射,此信息存储在相应参数的自定义属性中