问题描述
|
我有一个asp.net组件的旧版本。我想在旧版本的同时使用新版本。
我使用“ 0”命令将两个程序集都放入了GAC中。现在,我想在每个“ 1”页面中加载特定版本的组件。
我怎样才能做到这一点?
我可以使用此代码吗?
<%@ Register assembly=\"<dllname>,Version=2.5.0.0,Culture=neutral,PublicKeyToken=.......\" Namespace=\"<dllNamespace>.\" TagPrefix=\"WG\" %>
解决方法
您可以使用以下代码在运行时中创建所需版本的对象
Object obj = Activator.CreateInstance(\"dllName\",\"dllNameSpace.ClassName\");
您可以引用Activator.CreateInstance或使用Activator.CreateInstance从字符串名称创建对象
, 从技术上讲,是的,这可能与您要的Register
属性有关。然而,这并不是一条真正容易的步行路线,因为它将充满奇怪的局限性。
我的建议是要么尽可能不执行任何操作,要么将不同版本的控件隔离在可以存在于单独类库中的用户控件中。您将获得程序集名称,例如:controls_for_1_5
和controls_for_2_5
,并在此处创建对该程序集的引用。 (当然可以选择名称)。如果您不注意的话,这种方式仍然会引起奇怪的错误,例如Can\'t cast \'Namespace.ClassA\' to \'Namespace.ClassA\'
(是的,它们是相同的,不是错字)。
不过,除非您对.NET框架的更深层次有真正的深刻了解,否则我还是建议您不要这样做。