XSLTを介してXMLからユーザーコントロールを動的に作成します。出力は、次のような内容の文字列です。
<%@ Control Language="C#" AutoEventWireup="true" Inherits="Library.Web.UI.GeneratedFormBase, MyAssembly" %>
<div class="myCssClass">
<asp:TextBox ID="d" runat="server" OnTextChanged="OnTextChanged" />
<asp:Label runat="server" AssociatedControlID="SomeName" AccessKey="n">Label Text</asp:Label>
<asp:TextBox ID="SomeName" runat="server" OnTextChanged="OnTextChanged" />
<asp:Label runat="server" AssociatedControlID="SomeOtherName">Welcome</asp:Label>
<asp:TextBox ID="SomeOtherName" runat="server" OnTextChanged="OnTextChanged" />
<asp:Button ID="OK" runat="server" OnClick="ButtonClick" Text="Save" />
</div>
ここで、Page.ParseControl(theGeneratedString)を使用して、このコントロールを動的に作成します。
で宣言されているタイプInherits
は存在し、見つけることができます。そこで別の(つまり存在しない)型を宣言すると、Parser Error
例外がスローされるので、パーサーがこの型を探して見つけると完全に確信しています。
それにもかかわらず、から生成されるコントロールはParseControl
System.Web.UI.Control型であり、Inherits-declarationに記述されている(そして明らかに解析されて配置されている)コントロールではありません。
それはなぜですか。また、コントロールが正しいタイプであることを確認するにはどうすればよいですか。