實例使用C#反射/組裝/ Activator對象我有一個命名空間中定義一個類(我將省略的代碼):無法從字符串
namespace My.Business.Services
{
public class ProgressSender
{
}
}
該項目被保存爲一個DLL。在我的解決方案中的另一個項目中,我嘗試以各種方式安裝它(實際上這是我的app.config中的一個字符串),但它們都失敗了(它確實可以明確地在代碼中早期綁定類)。我已經包括My.Business.Services作爲參考程序太:
namespace My.Progress.Imaging
{
static class Program
{
static void Main(string[] args)
{
string exportItemNS = "My.Business.Services";
string exportItemC = "ProgressSender";
string exportItemFull = "My.Business.Services.ProgressSender";
//value cannot be null
ProgressSender obj =
(ProgressSender)Activator.CreateInstance(Type.GetType(exportItemFull));
//could not load type 'ProgressSender' from assembly 'My.Business.Services'
var obj=Activator.CreateInstance(exportItemNS, exportItemC);
//could not load type 'ProgressSender' from assembly 'My.Business.Services'
ProgressSender s=(ProgressSender)Activator.CreateInstance(null, exportItemFull);
//Loads ok but then classType is null
Assembly assembly;
assembly = Assembly.Load(exportItemNS);
Type classType = assembly.GetType(exportItemC);
}
}
}
如果我得到相同的命名空間,甚至系統是一個類型的罰款:
Type t = Type.GetType("My.Progress.Imaging.Program");
t = Type.GetType("System.String");
您是否還嘗試過'assembly.GetType(exportItemFull)'? – SimpleVar 2015-02-06 19:03:10