【发布时间】:2017-07-18 14:58:06
【问题描述】:
我正在翻译一个用 C# 编写的 dll,但在翻译字符串声明时遇到了一些麻烦。 C#中的代码如下:
using BGMC_TypeDefs;
using stdole;
using System.Runtime.CopilerServices;
using System.Runtime.InteropServices;
namespace bgmcproject
{
[Guid("3C69B26B-8D17-11D3-BA9C-00E09803AA6A")]
[ClassInterface(0)]
[ComSourceInterfaces("bgmcproject.__bgmc\0\0")]
[TypeLibType(32)]
[ComImport]
public class bgmcClass : _bgmc, bgmc, __bgmc_Event
{
[DispId(1745027134)]
public virtual extern string szMachineImg { [DispId(1745027134), MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)] [param: MarshalAs(UnmanagedType.BStr), In] set; }
}
}
我已经翻译了一些代码,我最终得到了这个:
Imports BGMC_TypeDefs
Imports stdole
Imports System.Runtime.CompilerServices
Imports System.Runtime.InteropServices
Namespace bgmcproject
<Guid("3C69B26B-8D17-11D3-BA9C-00E09803AA6A")>
<ClassInterface(0)>
<ComSourceInterfaces("bgmcproject.__bgmc\0\0")>
<TypeLibType(32)>
<ComImport>
Public Class bgmcClass
Implements _bgmc, bgmc, __bgmc_Event
<DispId(1745027134)>
Public virtual external String szMachineImg _
(<DispId(1745027134), MethodImpl(MethodImplOptions.InternalCall, _
MethodCodeType = MethodCodeType.Runtime)> _
<param MarshalAs(UnmanagedType.BStr), In> Set )
End Class
End Namespace
我想知道szMacingeImg的声明怎么写。 另外,如果您能帮我澄清一下,“实现”语句是否正确,或者我应该写“继承”。非常感谢。
【问题讨论】:
-
Implements适用于接口,Inherits适用于类。 -
非常感谢!知道如何翻译“公共虚拟外部”部分吗?
-
public直接映射。virtual我想应该是Overridable。我不确定extern,不过……这不是我在 VB 中需要做的事情。 -
再次感谢!你认为我可以把它写成一个函数吗?像这样: 。公共可重写函数 szMachineImg(
Set) As String End Function -
不幸的是,你现在已经超出了我的专业范围。对不起。 :(
标签: c# vb.net dll overriding