关于WinForm中的应用配置文件的使用

时间:2023-01-13 20:02:33
程序A,调用B,C两个类库。我可以在A的配置文件中对B、C的访问数据源进行配置。但B、C类库又调用了D类库,这时A的配置文件应该如何写,才能对D的访问方式做配置?

10 个解决方案

#1


做个公共的配置文件都可以访问不就可以的吗

#2


我可能没有说清楚,A的配置文件是.NET自动去访问的,并不是在B、C、D类库中自己写代码去访问

#3


你在代码中怎么操作D 把那些信息放到配置文件中

#4


楼上说的有道理

#5


还是举个例子吧:
在B类库的项目中,我有一个Web引用,指向http://localhost/Web_B,
在C类库的项目中,我有一个Web引用,指向http://localhost/Web_C,
在D类库的项目中,我有一个Web引用,指向http://localhost/Web_D。
然后A是一个EXE程序,在A.exe.config中,我可以通过applicationSettings来指明A要用到B、C时,B、C去访问的WEB,如:
<B.Properties.Settings>
      <setting name="B_WebReference_BpLogMngService"              serializeAs="String">           
<value>http://192.168.15.28/Web_B.asmx</value>
      </setting>
</B.Properties.Settings>
<C.Properties.Settings>
      <setting name="C_WebReference_BpLogMngService"              serializeAs="String">           
<value>http://192.168.15.28/Web_C.asmx</value>
      </setting>
</C.Properties.Settings>
这样处理,我可以通过在应用配置文件随时改变B、C要去访问的WebService。
但是D的情况不一样,D是提供封装好的控件给B、C使用,不是直接由A调用。如果像上面的方式写配置文件,达不到变更D访问URL的目的。

#6


不懂,只能友情的UP下

#7


我感觉应该 由C去解释怎么对D进行配置,如果c中要求另写的话,就只有另写了

#8


D的url是定死的吗?如果不是定死的,从哪里获取

#9


这个很简单,你在A中调用B/C/D前,做个中转类对调用进行判断即可。如:
在App.config中的applicationSettings下加一项:
<add key="WebServiceInvoked" value="A"/><!--A:Web_A,B:Web_B,C:Web_C-->

在中转类中:
string url = "";
//获取WebServiceInvoked,
string wsi = ...
如果wsi == "A"
if(wsi == "A")
    url = "http://localhost/Web_A.asmx";
else
    url = ...

至于对D中的访问路径的修改,也是可以实现的,你在D中用Configuration来访问配置文件,同样可以访问到你的这个config,类库里访问配置文件就是该类库dll下的config文件。

#10


lovvver(ElephantTalk.Bright):
因为B、C访问WebService的地址设置都是项目自动变更的,请问如果是手动添加D类库运行时对URL的修改,应该写在什么地方?

#1


做个公共的配置文件都可以访问不就可以的吗

#2


我可能没有说清楚,A的配置文件是.NET自动去访问的,并不是在B、C、D类库中自己写代码去访问

#3


你在代码中怎么操作D 把那些信息放到配置文件中

#4


楼上说的有道理

#5


还是举个例子吧:
在B类库的项目中,我有一个Web引用,指向http://localhost/Web_B,
在C类库的项目中,我有一个Web引用,指向http://localhost/Web_C,
在D类库的项目中,我有一个Web引用,指向http://localhost/Web_D。
然后A是一个EXE程序,在A.exe.config中,我可以通过applicationSettings来指明A要用到B、C时,B、C去访问的WEB,如:
<B.Properties.Settings>
      <setting name="B_WebReference_BpLogMngService"              serializeAs="String">           
<value>http://192.168.15.28/Web_B.asmx</value>
      </setting>
</B.Properties.Settings>
<C.Properties.Settings>
      <setting name="C_WebReference_BpLogMngService"              serializeAs="String">           
<value>http://192.168.15.28/Web_C.asmx</value>
      </setting>
</C.Properties.Settings>
这样处理,我可以通过在应用配置文件随时改变B、C要去访问的WebService。
但是D的情况不一样,D是提供封装好的控件给B、C使用,不是直接由A调用。如果像上面的方式写配置文件,达不到变更D访问URL的目的。

#6


不懂,只能友情的UP下

#7


我感觉应该 由C去解释怎么对D进行配置,如果c中要求另写的话,就只有另写了

#8


D的url是定死的吗?如果不是定死的,从哪里获取

#9


这个很简单,你在A中调用B/C/D前,做个中转类对调用进行判断即可。如:
在App.config中的applicationSettings下加一项:
<add key="WebServiceInvoked" value="A"/><!--A:Web_A,B:Web_B,C:Web_C-->

在中转类中:
string url = "";
//获取WebServiceInvoked,
string wsi = ...
如果wsi == "A"
if(wsi == "A")
    url = "http://localhost/Web_A.asmx";
else
    url = ...

至于对D中的访问路径的修改,也是可以实现的,你在D中用Configuration来访问配置文件,同样可以访问到你的这个config,类库里访问配置文件就是该类库dll下的config文件。

#10


lovvver(ElephantTalk.Bright):
因为B、C访问WebService的地址设置都是项目自动变更的,请问如果是手动添加D类库运行时对URL的修改,应该写在什么地方?

相关文章