Я динамически создаю пользовательский элемент управления из XML через XSLT.Выходные данные - это строка с таким содержимым:
<%@ 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 и не относится к элементу управления, который указан (и, очевидно, также проанализирован и найден) в объявлении наследования.
Почему это так и как я могугарантировать, что контроль имеет правильный тип?