VB到C#翻译

AAs*_*Ask 4 c# vb.net c#-to-vb.net

在VB(ASP.NET)

Application("myapp")= Server.CreateObject("APP.Engine")

aa = Application("myapp").myMethod(2)
Run Code Online (Sandbox Code Playgroud)

作品.

在C#我尝试过

Application["myapp"]= Server.CreateObject("APP.Engine")
Run Code Online (Sandbox Code Playgroud)

但

Application["myapp"].myMethod(2)
Run Code Online (Sandbox Code Playgroud)

失败了

'object' does not contain a definition for 'myMethod'
Run Code Online (Sandbox Code Playgroud)

如何在C#中公开公共接口?

Phi*_*eck 7

如果您可以访问定义类型(即不是原始COM对象),则可以简单地转换:

((APP.Engine)Application["myapp"]).myMethod(2);
Run Code Online (Sandbox Code Playgroud)

如果您使用的是c#4.0,则可以执行以下操作:

dymamic myApp = Application["myapp"];
myApp.myMethod(2);
Run Code Online (Sandbox Code Playgroud)

否则,您将不得不使用反射和动态方法调用 Type.InvokeMember(...)

  • 哇...让我们不要轻易地动摇. (3认同)
  • @ChaosPandion - 对于来自c#的COM调用,动态适合该法案,我认为 - 几乎不会轻易. (2认同)