我有一个应用程序,其中包含一系列几乎每月都会更改的服务引用。大多数情况下,如果有任何变化,变化很小。我希望能够根据配置文件中的目标版本选择在运行时使用哪个引用。例如。我可能有以下 NameSpace 的三个版本,它们都具有 Class1。Class1 可能在版本之间有细微的变化,比如附加属性。任何指导都会有所帮助:)NameSpaceVersion1.Class1 MyVar = new NameSpaceVersion1.Class1();NameSpaceVersion2.Class1 MyVar = new NameSpaceVersion2.Class1();NameSpaceVersion3.Class1 MyVar = new NameSpaceVersion3.Class1();
3 回答
holdtom
TA贡献1805条经验 获得超10个赞
如果这三个命名空间在同一个 DLL 中
您可以尝试使用Activator.CreateInstancewithType.GetType函数。
Type.GetType(nameSapce) 在此 DLL 中获取具有命名空间的类类型
Activator.CreateInstance relation 创建一个对象。
像这样。
string nameSapce = ConfigurationManager.AppSettings["NameSpace"];
var MyVar = Activator.CreateInstance(Type.GetType(nameSapce));
在webConfig 上设置
keyNameSpace可以设置你想在运行时创建哪个类。
<configuration>
<appSettings>
<add key="NameSpace" value="NameSpaceVersion2.Class1"/>
</appSettings>
</configuration>
慕码人8056858
TA贡献1803条经验 获得超6个赞
这是接口的一个很好的用途。
但是,如果您无法更改实现(因此每个类都实现接口),您可以创建这样做的包装类。
基本上,为每个实现目标接口的实现创建一个类,但将调用传递给目标实现。您可以将实现类传递给构造函数中的包装类,然后将其存储为私有字段,该字段将用于接口的每个公共成员访问。
- 3 回答
- 0 关注
- 181 浏览
添加回答
举报
0/150
提交
取消