2012-06-17 3 views
0

WPF UI Automation systemGetPattern() 방법 구현이 열거 매개 변수 PatternInterface을 복용 구현되고 우리가 일반적으로 다음과 같은 방법으로 사용 : 위의 코드에서System.Windows.Automation.Peers.AutomationPeer.GetPattern() 메서드가 Generics를 사용하지 않는 이유는 무엇입니까?

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

, 선 질문에서 코멘트 와 선 것 같다 강력한 형식이 아닌 경우 GetPattern() 메서드에서 필요한 인터페이스로 반환하고 특정 UI 자동화를 호출하는 데 사용해야합니다.

질문은 다음과 같습니다 WPF에서 GetPattern() 메소드의 구현은 다음과 같이 닷넷 프레임 워크에 이미 존재하는 Generics 사용하여 수행 된 경우 가 더 나은되지 않았을 :

public T GetPattern<T>; 
  • 경우, I 그런 다음 GetPattern<T> 메서드를 호출하고 메서드를 호출하는 동안 필요한 인터페이스 패턴 이름을 전달하고 해당 인터페이스 인스턴스 을 강력하게 입력하고 이 아닌캐스트이 필요합니다. 무슨 생각은 마이크로 GetPattern()enum을 필요로 원래의 구현에 주어진가?
  • 메서드 매개 변수에 enums를 사용하면 원래 유지 관리의 유지 관리가 깨지지 않습니다. 나는 패턴 인터페이스의 열거 값은 내가 더 쉽고 더 나은 가정 이 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(); 
+4

마이크로 소프트가 디자인 결정을 내린 이유는 말할 수 없습니다. 적절한 포럼에서 질문 할 것입니다. – Basic

+1

@Basic @Basic은 질문 할 수 없으므로 말할 수 없습니다. 이 사이트에 많은 사람들이 질문에 대한 답변을 잘 알고 있고 구현의 장단점에 대한 제안을 많이 갖고 있기 때문에이 질문을 닫으십시오.이 질문은 Microsoft가 왜 이 방법으로 구현; 오히려이 방법을 제시하는 또 다른 방법이 프로그래밍 세계에 도움이되었는지 묻습니다. – VS1

+0

@CSharpVJ 누군가가 정확하게 당신의 질문에 대답 할 수 있다면 그것은 좋을 것입니다. 그러나 당신이 대답을 얻지 못하거나 질문이 닫히는 경우에 대비해서 , 나는이 아이디어를 [MS Coneect] (http://connect.microsoft.com/VisualStudio)에 올리라고 제안 할 것입니다. 이것이이 질문에 대한 좋은 대답을 얻을 수있는 유일한 곳입니다. – akjoshi

답변

2

그것은 일반적인 이유입니다 : 그들은 타임머신을 가지고 있지 않았다. 참조 소스에서 사용할 수있는 소스 코드 파일의 "기록"주석에서 볼 수있는 UI Automation 클래스는 2003 년 6 월 경에 시작되었으며 이전 작업에서 파생되었음을 보여줍니다. 제네릭은 DD/WPF/SRC/UIAutomation/UIAutomationTypes/시스템/윈도우/AutomationPattern.cs에서 2005

까지 사용할 수있게되지 않았다

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

것은 브랜든 McKeon 가능성이었다. "WCP"가 의미했던 것만 큼 괜찮은 추측은 아닙니다.

+0

그때이 API의 서명을 변경하면 호환성 문제가 발생합니다 (또는 변경 될 수 있습니까?). 그리고이 기능은 많이 테스트되지 않았고 코드가 많이 검토되었을 수도 있습니다. . – VS1

관련 문제