0

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();
4

1 に答える 1

2

それは通常の理由によるものです: 彼らはタイムマシンを持っていませんでした. リファレンス ソースから入手できるソース コード ファイルの "履歴" 注釈からわかるように、UI オートメーション クラスの作業は 2003 年 6 月頃に開始され、それが以前の作業から派生したものであるという証拠があります。ジェネリック医薬品は 2005 年まで利用できませんでした。

dd/wpf/src/UIAutomation/UIAutomationTypes/System/Windows/AutomationPattern.cs から:

// History:
//  06/02/2003 : BrendanM Ported to WCP

それはおそらくブレンダン・マッケオンでした。「WCP」が何を意味していたのかについての適切な推測はありません。

于 2012-06-17T17:47:02.463 に答える