8

コード:

add-type @"
    public interface IFoo
    {
        void Foo();
    }

    public class Bar : IFoo
    {
        void IFoo.Foo()
        {
        }
    }
"@ -Language Csharp

$bar = New-Object Bar
($bar -as [IFoo]).Foo() # ERROR.

エラー:

[Bar] に 'Foo' という名前のメソッドが含まれていないため、メソッドの呼び出しに失敗しました。

4

3 に答える 3

5

自然な方法で明示的なインターフェイスを簡単に呼び出せるように、PowerShell v2.0 用に何かを書きました。

PS> $foo = get-interface $bar ([ifoo])
PS> $foo.Foo()

見る:

http://www.nivot.org/2009/03/28/PowerShell20CTP3ModulesInPracticeClosures.aspx (アーカイブはこちら)。

これは、インターフェイスへの呼び出しをサンクする動的モジュールを生成することによって行われます。解決策は、純粋な powershell スクリプトにあります (厄介な add-type トリックはありません)。

-オイシン

于 2009-04-17T17:17:38.797 に答える
2

悪いニュース:それはバグです。

https://connect.microsoft.com/feedback/ViewFeedback.aspx?FeedbackID=249840&SiteID=99

于 2009-04-14T02:29:17.477 に答える