2010-03-03 64 views
3

我有用VB.NET編寫的方法。它看起來像這樣:如何從C#中使用可選參數調用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。

有沒有辦法做到這一點?

在此先感謝您的幫助。

回答

9

不,在C#3中,您只需傳遞所有參數即可。 C#4將具有可選參數和命名參數。

你可以創造一些重載的變化,但這只是一個近似值。

+0

+1的自定義屬性中。這正是VB.Net編譯器所做的 - 它只是在編譯調用者時自動插入缺失值的缺省值。 – MarkJ 2010-03-03 14:19:57

+0

@MarkJ,是的,但在Fx4中,可選值也在元數據中,我剛剛使用VS2010進行了驗證。 C#使用VB中的選擇值就好了。 – 2010-03-03 14:49:34

2

不使用C#4.0(它增加了對可選參數的支持),您不能使用它們;如果您通過FxCop運行您的代碼,您將看到特別標記爲可供C#不能使用的可選參數。

0

如果要檢索可選參數的值,則可以使用反射,此信息將存儲在相應參數

+0

我想你誤解了這個問題。他希望從C#中執行VB方法簽名的'SomeMethod(someGUID,「某些字符串」)',正如他指出的那樣。 C#<4.0中不可能的東西 – jamone 2010-03-03 13:16:46

相關問題