2011-12-04 3 views
2

보호 된 메서드에 액세스하는 방법을 알고 싶습니다.C#에서 보호 된 메서드에 액세스하는 방법

나는 많은 보호 된 방법이있는 WebBrowser 컨트롤 (Awesomium)을 가지고 있습니다.

이 WebControl을 사용하여 WinForm에 탭 브라우저를 만들었습니다.

이제는 InjectKeyboard- 방법을 사용할 수 없으므로 보호됩니다.

이는 방법 :

//  Injects a keyboard event. 
// 
// Parameter: 
// keyEvent: 
//  The keyboard event to inject. You'll need to initialize the members of the 
//  passed Awesomium.Core.WebKeyboardEvent, yourself. 
// 
// Note: 
//  Awesomium.Windows.Forms.WebControl handles this internally. Inheritors do 
//  not need to call this method unless they implement custom logic. This method 
//  bypasses settings of the Awesomium.Windows.Forms.WebControl.InputController. 
//  For performance reasons, no validity check is performed when calling protected 
//  members. Inheritors should perform any such checks (see Awesomium.Windows.Forms.WebControl.IsLive), 
//  before calling these members. 

protected void InjectKeyboardEvent(WebKeyboardEvent keyEvent); 

API를 링크에

HERE가 왜이 방법을 보호 않았고, 내가 그것을 어떻게 사용할 수 있지만?

+0

함수는 일반적으로 보호 상태로 표시됩니다. 원래 코드 작성자가 외부 호출자가 수행하기를 원하지 않는 방식으로 객체의 상태를 변경하거나 객체의 동작을 변경할 수 있기 때문입니다. 그러나 파생 클래스가이를 수행하는 것은 완벽하게 허용 될 수 있습니다. 따라서 사용법이 적합합니다. 이 경우 주석에 언급 된대로이 메소드를 무시하거나 무시하면 입력에 대한 클래스의 동작이 변경됩니다. – dash

+0

설명을 주셔서 감사합니다. 왜 지금 보호 받고 있는지 이해했습니다. – Jasper

답변

1

필요에 따라이 클래스에서 상속하고 메소드를 노출하십시오 (메소드 위의 주석에 의해 제안 된대로).

+0

그래서 WebControl 클래스를 상속하고 해당 메서드 만 노출하는 새 클래스를 만들어야합니까? – Jasper

+0

예, 'Awesomium.Windows.Forms.WebControl'에서 상속해야합니다. 하지만 어쩌면 당신은이 상속 된 클래스에서 원하는 것을 할 수 있고'private/protected'는 재미있는 주석을 달지 않지만 내부 행동을 캡슐화하므로 메소드를 노출 할 필요가 없습니다. – Matten

+0

그냥 이해하고 (저는 전문가 프로그래머가 아닙니다). 상속하는 것이 바로 이것입니까? 클래스 WebControlExtend : WebControl { public void TempInject (WebKeyboardEvent events) { this.InjectKeyboardEvent (events); } } – Jasper

관련 문제