[英]How to get the Type of a class in Main Project through a class in Class Library Project
我有一个附加到主项目的类库项目,并且在该类库项目中,有一个名为SQSQueueScheduler.cs的类,在该类下我编写了以下代码
Contacts contact = (Contacts)ConfigurationManager.GetSection("bolteContactConfiguration");
if (contact != null)
{
className = contact.ClassName;
Type myclass = Type.GetType(className);
objContacts = (Contacts)Activator.CreateInstance(myclass);
}
这里的Contacts是一个基类,我想通过该基类动态创建派生类ChildContacts的实例。 该基类在类库项目中存在,派生类在主网站中存在。 变量className的值是Child.ChildContacts(AIST是名称空间,AISTContacts是类的名称)。 在这里,我在myClass变量中获取了Null值。 我在主项目的web.config中编写的代码是
<section name="bolteContactConfiguration" type="TDNBolte.Contacts,3DN Bolte" requirePermission="false"/>
<bolteContactConfiguration name ="Contacts" className="Child.ChildContacts"/>
3DN Bolte是类库项目的程序集的名称。
我想问一下,有没有一种方法可以通过类库项目的类(SQSQueueScheduler)中编写的代码来获取主网站(ChildContacts)中存在的类的类型?
如果类型在当前正在执行的程序集中或在Mscorlib.dll中,则只需提供其名称空间限定的类型名称即可。
但是,您尝试加载的类型既不在Mscorlib.dll
也不在当前程序集中。 因此,您需要提供程序集合格名称。 诸如Child.ChildContacts, MainProject.dll
类的东西(假定程序集不是强命名的)。
但是请注意我的评论,您可能应该改为让主项目为类库1显式提供配置或工厂方法,以便它不会尝试通过反射将消耗的应用程序拆开。
1或者接受Dependency Injection 2,并设计您的类库以假定其中一个存在。 然后只需将其列出为使用类库的要求,即在容器中注册了合适的Contacts
实现。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.