Проблема получения пользовательского элемента управления из абстрактного базового класса в проекте веб-сайта - PullRequest
1 голос
/ 03 июня 2010

На веб-сайте Visual Studio я создал пользовательский элемент управления. Этот элемент управления является производным от класса (в App_Code), который сам является производным от System.Web.UI.UserControl. Это абстрактный класс с абстрактным методом. Затем я пытаюсь реализовать этот метод в пользовательском элементе управления, но я получаю следующие ошибки из Visual Studio:

Error   1   'WebUserControl.AbstractMethod()': no suitable method found to override C:\Users\User\Documents\Visual Studio 2010\WebSites\Delme\WebUserControl.ascx.cs    10  28  C:\...\Delme\    
Error   2   'WebUserControl' does not implement inherited abstract member 'AbstractBaseClass.AbstractMethod()'  c:\Users\User\AppData\Local\Temp\Temporary ASP.NET Files\delme\0eebaa86\f1a48678\App_Web_nrsbzxex.0.cs  14  

Ошибка 1 говорит, что мое переопределение абстрактного метода недопустимо, оно не распознает абстрактный метод в базовом классе. Ошибка 2 говорит, что частичный класс, автоматически созданный asp.net, не реализует абстрактный метод!

Обратите внимание, что это прекрасно работает, когда код используется в проекте веб-приложения.

Почему это происходит?

1 Ответ

1 голос
/ 03 июня 2010

Ответ состоял в том, что абстрактный метод в базовом классе был помечен как внутренний . Хотя это хорошо для проектов веб-приложений, в которых все классы оказываются в одной сборке, веб-сайт работает по-разному. Я предполагаю, что автоматически созданная половина части класса не окажется в той же сборке, что и моя половина, и поэтому внутреннее ключевое слово нарушало ее.

...