0

次のコードを使用して、Outlook から特定のアドレス帳を取得しています。

$outlook = $(New-Object -ComObject Outlook.Application)
$Session = $outlook.Session
$Session.Logon()
$ab = $Session.AddressLists | ? {$_.Name -eq 'test'}

$ab次に、C# を使用して、以下を使用してオブジェクトを .netに変換しようとします。

$source = @"
using Microsoft.Office.Interop.Outlook;
public unsafe static class OAB
{
    public static void List(object Stream) 
    {
       var i = Stream as Microsoft.Office.Interop.Outlook.AddressList; 
       return i;
    }
}
"@
$cp = new-object System.CodeDom.Compiler.CompilerParameters                                                                                                                                                                                                 
$cp.CompilerOptions = "/unsafe"
$cp.ReferencedAssemblies.Add('C:\wkdir\refassem\Microsoft.Office.Interop.Outlook.dll')
Add-Type -TypeDefinition $source -CompilerParameters $cp

私が受け取るエラーは次のとおりです。

Since 'OAB.List(object)' returns void, a return keyword must not be followed by an object expression

免責事項、私は C# の完全な初心者です。

4

1 に答える 1

0

List 関数を戻り値の型として宣言してvoidいますが、値を返しています。修正するには、関数を次のように変更します。

public static Microsoft.Office.Interop.Outlook.AddressList List(object Stream)

void関数は、値が返されないことを意味します。値を返す予定がある場合は、void を削除して、返したい型に置き換える必要があります。

于 2013-04-08T14:58:47.797 に答える