ASP.Netコントロールがいくつかあるプロジェクトに新しいコントロールを追加しています。各コントロールは、基本的に.Netクラス(ScriptControlを継承)とjavascriptファイルで構成されます。各jsファイルはWebResourceとしてアセンブリに追加されます
[assembly: WebResource("Assembly.Namespace.WidgetControl.js", "text/javascript")]
[assembly: WebResource("Assembly.Namespace.CogControl.js", "text/javascript")]
他のコントロールの1つから別のjavascriptリソースの「クラス」から継承したいのですが、そうしないと、継承したいjsクラスの関数コードの一部をコピーして貼り付ける必要があります。 、メンテナンスのために醜い。私は重複した努力のファンではありません。
さて、私が求めているのはWebResourceのロード順序です。たとえば、説明のために、のクラスから継承し、WidgetControl.js
で拡張したいとしThingaMahBobControl.js
ます。ウィジェットの後にThingaMahBobのWebResourceアセンブリ参照を追加すると、ロード順序が保証されますか?
まだロードされていないものから継承できないので、これは非常に重要です。コントロールは抽象ScriptControlを継承しているので、実装する必要がありますGetScriptReferences()
。そうすれば、列挙可能な参照のコレクションを目的の順序で返すことができますか?すなわち:
protected override IEnumerable<ScriptReference> GetScriptReferences()
{
List<ScriptReference> refs = new List<ScriptReference>();
refs.Add(new ScriptReference("Assembly.Namespace.WidgetControl.js", this.GetType().Assembly.FullName));
refs.Add(new ScriptReference("Assembly.Namespace.ThingaMahBobControl.js", this.GetType().Assembly.FullName));
return refs;
}