簡體   English   中英

將C#元帥接口代碼轉換為VB.NET時出現問題

[英]Issue converting C# marshal interface code to VB.NET

我正在嘗試將項目從C#轉換為VB.NET,以將Outlook消息拖放到我們的程序中。

原始來源,可以發現這里在CodeProject上。

我已經完成了95%的工作,但是在實現IStorage接口時遇到了麻煩,下面概述了其中的一部分。

public interface IStorage
{
    [return: MarshalAs(UnmanagedType.Interface)]
    IStream CreateStream([In, MarshalAs(UnmanagedType.BStr)] string pwcsName,
                         [In, MarshalAs(UnmanagedType.U4)] int grfMode,
                         [In, MarshalAs(UnmanagedType.U4)] int reserved1,
                         [In, MarshalAs(UnmanagedType.U4)] int reserved2);                
}

我已經在VB.NET中將其轉換為以下內容:

<MarshalAs(UnmanagedType.Interface)>
Function CreateStream(<[In], MarshalAs(UnmanagedType.BStr)> ByVal pwcsName As String,
                      <[In], MarshalAs(UnmanagedType.U4)> ByVal grfMode As Integer,
                      <[In], MarshalAs(UnmanagedType.U4)> ByVal reserved1 As Integer,
                      <[In], MarshalAs(UnmanagedType.U4)> ByVal reserved2 As Integer) As IStream

但是,它導致以下錯誤:

無法將屬性“ MarshalAsAttribute”應用於“ CreateStream”,因為該屬性在此聲明類型上無效。

我在這里我深入一點了,真的希望你可以在幫助我解決這個問題的任何指針

非常感謝。

您可以通過以下方式將屬性應用於返回值:

Function CreateStream(<[In], MarshalAs(UnmanagedType.BStr)> ByVal pwcsName As String,
            <[In], MarshalAs(UnmanagedType.U4)> ByVal grfMode As Integer,
            <[In], MarshalAs(UnmanagedType.U4)> ByVal reserved1 As Integer,
            <[In], MarshalAs(UnmanagedType.U4)> ByVal reserved2 As Integer) As <MarshalAs(UnmanagedType.Interface)> IStream

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM