私のプロジェクトには奇妙な問題があります。私は基底クラス(もう一度他の基底クラスから継承)から継承し、関数をオーバーライドするクラスを持っています。しかし、その関数が呼び出されると、オーバーライドされた関数ではなく、基本関数が呼び出されます。オーバーライドされた仮想関数は呼び出されません
しかし、中間クラスでその関数をオーバーライドすると呼び出されます。しかし、これは紛らわしいです:TigerControlRoot
LIB- クラスbScreen
- 仮想関数InitializeRoc
をGuiSharedの図面で説明しましょう:)
libに
- クラスbTigerScreen
- オーバーライド機能InitializeRoc < - ここオーバーライドするときには
- クラスbTigerScreen
- libにTigerControlRootCommonScreens
- クラスCheckInRules
-
呼び出されます
- オーバーライド機能InitializeRoc < - 呼び出されていない。■
- クラスCheckInRules
コンストラクタが呼び出されますが...
ここに私の(簡体字)のコードです:
共有基盤クラス
namespace Ppb.GuiShared.Screens {
public partial class bScreen<T> : Ppb.Controls.pPanel where T : FrameworkMiddleware.Framework.Remoting.Remotable, FrameworkMiddleware.IInitialize, new() {
public virtual void Load(bMain<T>.LoadEventArgs args) {
log.Trace("InitializeRoc " + this.GetType().FullName);
InitializeRoc(args);
_hasLoaded = true;
}
protected virtual void InitializeRoc(bMain<T>.LoadEventArgs args) { }
}
}
プロジェクトベースクラス
namespace Tiger.ControlRoot.Screens {
public partial class bTigerScreen : Ppb.GuiShared.Screens.bScreen<roc.Tiger> {
public bTigerScreen(GuiSettings settings, roc.Tiger tiger)
: base(settings, tiger) {
InitializeComponent();
InitializeMenu();
}
}
}
失敗クラス(またはそのLIBから他のクラス)
namespace Tiger.ControlRoot.CommonScreens {
[ControlRoot.Screens.TigerScreenInfo("Testje", Tiger.ControlRoot.Screens.TigerScreenInfoAttribute.elevel.User, true)]
public class CheckInRules : ControlRoot.Screens.bTigerScreen {
public CheckInRules(GuiSettings settings, roc.Tiger tiger)
: base(settings, tiger) {
}
protected override void InitializeRoc(Ppb.GuiShared.bMain<TigerMiddleware.TigerRoc.Tiger>.LoadEventArgs args) {
base.InitializeRoc(args);
}
}
}
そして、それは十分ではなかった場合、私は、基本クラスIにいくつかの関数を呼び出すしようとすると、 TypeLoadExceptionを受け取ります。
GenericArguments[0], 'TigerMiddleware.TigerRoc.Tiger', on 'Ppb.GuiShared.bMain`1+LoadEventArgs[T]' violates the constraint of type parameter 'T'.
他のプロジェクトでも同じGuiShared libと同じコードが使用されていますが、問題はありません。
問題を説明するために、短いが完全なプログラム(コンソールアプリケーションが望ましい)を提供してください。私たちが現時点で入手しているスニペットは、(私にはとにかく)明確ではありません。 –
TigerMiddleware.TigerRoc.Tigerの定義を教えてください。 –