2011-12-04 5 views
2

Я хотел бы знать, как получить доступ к защищенному методу.Как получить доступ к защищенному методу в C#

У меня есть элемент управления WebBrowser (Awesomium), который имеет множество защищенных методов.

Я создал браузер с вкладками с этим WebControl в WinForm.

Теперь я не могу использовать ie InjectKeyboard -method, потому что он защищен.

Это метод:

//  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 Link является HERE

Почему они защищают этот метод и как я могу его использовать?

+0

Функция обычно помечена как защищенная, так как она может изменять состояние объекта или изменять поведение объекта таким образом, чтобы исходный кодер мог не хотеть использовать внешние вызывающие абоненты. Однако для производных классов это может быть вполне приемлемым - следовательно, использование. В этом случае, как отмечается в комментарии, переопределение или обход этого метода изменяет поведение класса по отношению к вводу. – dash

+0

Спасибо за объяснение, я понял, почему сейчас защищен. – Jasper

ответ

1

Наследуйте этот класс и выставляйте метод, если вам нужно (как предложено комментарием выше метода).

+0

Так что я должен создать новый класс, который наследует класс WebControl и выставляет только этот метод? – Jasper

+0

Да, вы должны наследовать от 'Awesomium.Windows.Forms.WebControl'. Но, возможно, вы можете сделать то, что хотите в этом унаследованном классе, и не нужно подвергать этот метод, поскольку 'private/protected' не аннотируется для удовольствия, а инкапсулирует внутреннее поведение. – Matten

+0

Просто чтобы понять (я не программист для гуру). Это этот корретный способ унаследовать? class WebControlExtend: WebControl { public void TempInject (события WebKeyboardEvent) { this.InjectKeyboardEvent (события); } } – Jasper