のGetPattern()メソッドの実装はWPF UI Automation system
、enum パラメーターPatternInterface
を使用して実装され、通常は次のように使用します。
//Code with original implementation
ButtonAutomationPeer buttonPeer = new ButtonAutomationPeer(button1);
IInvokeProvider provider = (IInvokeProvider)buttonPeer.GetPattern(PatternInterface.Invoke); //Line in Question
//To invoke the click event of button we then use the following code:
provider.Invoke();
上記のコードから、コメントLine in Questionのある行は強く型付けされていないようです。メソッドからの戻り値をGetPattern()
必要なインターフェイスにキャストし、それを使用して特定の UI オートメーションを呼び出す必要があります。
質問:GetPattern()
メソッドの実装が、以下のように .Net Framework にWPF
既に存在するものを使用して行われ
た場合、それは良くなかったでしょうか:Generics
public T GetPattern<T>;
- ここで、メソッドを呼び出すときに必要なインターフェイス パターン名を渡し、
GetPattern<T>
厳密に型指定されたそのインターフェイス インスタンスを取得し、キャストも必要としません。?を必要とするメソッドの最初の実装において、Microsoft はどのような考えを示しまし たか?GetPattern()
enum
GetPattern()
メソッド パラメーターで列挙型を使用しても、元の実装の保守性が損なわれることはありません。新しい Control インターフェース パターンをサポートする必要がある場合、そのパターン インターフェースの列挙値を、PatternInterface
Generic 実装の呼び出しを使用する以下の新しいコードを使用して、メソッドを呼び出してインターフェイス パターンを取得する方が簡単で優れていると思います。
//Code with New Generics based implementation
ButtonAutomationPeer buttonPeer = new ButtonAutomationPeer(button1);
IInvokeProvider provider = buttonPeer.GetPattern<IInvokeProvider>(); //Line in Question
//To invoke the click event of button we then use the following code:
provider.Invoke();