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();
从上面的代码来看,Question中带有注释 Line 的行似乎不是强类型的,我们需要将GetPattern()
方法的返回值强制转换为所需的接口,然后使用它来调用特定的 UI 自动化。
问题是:
如果使用.Net Framework 中已经存在的GetPattern()
方法实现如下,会不会更好:WPF
Generics
public T GetPattern<T>;
- 在哪里,然后我会在调用该方法时传递所需的接口模式名称,
GetPattern<T>
并获得该接口实例的强类型,并且也不需要cast。GetPattern()
微软在方法的原始实现中给出了什么想法enum
? - 在方法参数中使用枚举不会破坏
GetPattern()
原始实现的可维护性。我会说,当需要支持新的 Control 接口模式时,需要将该模式接口的枚举值添加到名为PatternInterface
我想调用方法并使用以下使用调用通用实现的新代码获取接口模式会更容易和更好:
//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();