PowerShell에서 명시 적으로 구현 된 인터페이스 메소드를 어떻게 호출 할 수 있습니까?
-
09-09-2019 - |
문제
암호:
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'라는 메소드가 포함되어 있지 않기 때문에 메소드 호출이 실패했습니다.
다른 팁
나는 PowerShell v2.0을 위해 무언가를 자연스러운 방식으로 명시적인 인터페이스를 쉽게 호출 할 수 있도록 썼습니다.
PS> $foo = get-interface $bar ([ifoo])
PS> $foo.Foo()
보다:
http://www.nivot.org/2009/03/28/powershell20ctp3modulesinpracticeclosures.aspx
펑크가 인터페이스로 호출하는 동적 모듈을 생성하여이를 수행합니다. 이 솔루션은 순수한 PowerShell 스크립트 (불쾌한 추가 유형 트릭 없음)에 있습니다.
-이신
당신은 같은 일을 할 수 있습니다
$bar = New-Object Bar
[IFoo].GetMethod("Foo").Invoke($bar, @())
당신은 얻습니다 ( 반사 ) 회원의 대표 IFoo
~로부터 Type
개체하고 전화하십시오 Invoke
초과 적재. 그래도 너무 나쁜 사람은 그렇게해야합니다. 명시 적으로 구현 된 속성 등에 대한 유사한 접근법
메소드가 인수를 받으면 배열에 들어갑니다. @()
물론 위의 코드에서 쉼표 후.
제휴하지 않습니다 StackOverflow