2013-10-15 89 views
0

我在VB.NET中有下面的代碼,它現在運行良好。我需要將其轉換爲C#。它不能被編譯,因爲編譯器不知道代理的方法。你能不能讓我知道我可以如何將參數(Byref代理作爲對象)轉換爲C#。非常感謝。從VB.NET轉換對象參數到C#

Public Shared Function SetupProxy(ByRef proxy As Object) As Boolean 
    Dim token As New UsernameToken(Var.sHTNGUsername, Var.sHTNGPassword, PasswordOption.SendPlainText) 
    Dim clientPolicy As New Policy 

    clientPolicy.Assertions.Add(New UsernameOverTransportAssertion()) 

    proxy.SetPolicy(clientPolicy) 
    proxy.SetClientCredential(token) 

    Return True 
End Function 
+0

'ByRef'只是'ref'在C# – Silvermind

+1

的代碼片段不顯示哪種類型的 「代理」 了。我們需要在C#中指定它的確切類型,並使用它的方法並將其轉換爲類似於「 proxyCasted = proxy爲」 –

+0

'ref object proxy'就是它 –

回答

0

在C#動態調用,您可以使用反射:

public static bool SetupProxy(ref object proxy) 
{ 
    UsernameToken token = new UsernameToken(Var.sHTNGUsername, Var.sHTNGPassword, PasswordOption.SendPlainText); 
    Policy clientPolicy = new ClientPolicy(); 

    clientPolicy.Assertions.Add(new UsernameOverTransportAssertion()); 

    proxy.GetType().InvokeMember("SetProxy", BindingFlags.InvokeMethod, null, proxy, new object[] { clientPolicy }); 
    proxy.GetType().InvokeMember("SetClientCredential", BindingFlags.InvokeMethod, null, proxy, new object[] { token }); 
    return true; 
}