如果你看一個aspx頁面設計師CS文件,你會發現,設計師在運行時將對象添加到控件的頁面。如果你願意,你可以在運行時編譯器服務爲頁面生成一個類,或者你可以創建一個函數,通過它的類型名稱創建一個控件的實例,然後將該對象添加到頁面中。
Type.GetType("myControl").GetConstructor(new Type[] { typeof(string) }).Invoke(new object[] { "myString" });
哪個應該返回創建的控件,然後您可以用設計器的相同方式進行連接。
編輯:或者你可以查找compiler services。我曾經制作過一個程序,它將它的基於xml的配置文件,並使用字符串生成器將其轉換爲可編譯的.cs文件。然後我使用編譯器服務將該文本編譯成我執行的類。它開始生活是這樣的:
using System;
public class MyConfigClass
{
{0}
{1}
{2}
public MyConfigClass()
{
}
}
和弄成這個樣子
using System;
public class MyConfigClass
{
public string FirstName{
get;
set;
}
public string LastName{
get;
set;
}
public string Age {
get;
set;
}
public MyConfigClass()
{
}
}
基於此信息
<?xml version="1.0" encoding="utf-8"?>
<ConfigProperties>
<Property>
<Name>FirstName</Name>
<Value>John</Value>
</Property>
<Property>
<Name>LastName</Name>
<Value>Smith</Value>
</Property>
<Property>
<Name>Age</Name>
<Value>12</Value>
</Property>
</ConfigProperties>
基本上字符串生成了:「公共{0} {1} {get; set;}「,然後根據xml的值構建最終的字符串。編譯器服務然後把它變成一個類。一旦課堂製作完畢,它可以存儲以供將來使用。我做的另一個嘗試是在網站項目中將代碼文件從磁盤中運行,然後調用該站點以重新啓動(這有效地重新編譯了IIS在目錄中找到的所有內容,包括您的新代碼文件)。
可能性:)
謝謝, 我沒有找到代的方式是合理的!有沒有另一種技術來解決這個問題? – asker
我擴大了答案。我假設你有某種存儲配置信息的數據存儲 – 2011-10-07 00:23:48