1

Visual Studio Webサイトで、ユーザーコントロールを作成しました。このコントロールは、それ自体がSystem.Web.UI.UserControlから派生したクラス(App_Code内)から派生します。これは、抽象メソッドを持つ抽象クラスです。次に、そのメソッドをユーザーコントロールに実装しようとしましたが、VisualStudioから次のエラーが発生します。

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によって自動的に構築された部分クラスが抽象メソッドを実装していないことを示しています。

コードがWebアプリケーションプロジェクトで使用されている場合、これは正常に機能することに注意してください。

なぜこうなった?

4

1 に答える 1

1

答えは、基本クラスの抽象メソッドが内部としてマークされているということでした。これは、クラスがすべて同じアセンブリにまとめられるWebアプリケーションプロジェクトには問題ありませんが、Webサイトの動作は異なります。部分クラスの自動的に作成された半分は、私の半分と同じアセンブリになっていないと思います。そのため、internalキーワードがそれを壊していました。

于 2010-06-03T09:20:53.943 に答える