在C#中从.config文件调用设置将返回值的类型而不是值

时间:2013-02-16 23:45:41

标签: c# serialization windows-services app-config

我有2个C#项目。 项目A可以访问项目B的.config文件(通过内部应用程序设置)。我有功能证明,因为B可以访问项目A的配置文件的特定值。

在项目A的配置文件中查询一个特定值而不是项目B返回它的类型。这很奇怪。

我有相同的代码块,但Proj B返回类型,Proj A返回值。

值得注意的是,值本身是一个序列化的对象列表。这些项目可以毫无困难地随意序列化和反序列化,这可以在各个部分完成。在两个项目中使用相同的代码,在项目B中,在去隔离期间,项目使用MessageBox.Show或EventLog.Write()在去隔离之前输出当前值,并在项目A中显示值。 ..

</xml version="1.0"?><MyValues xmlns:xsi="http://wwww.w3.org/2001/XMLSchema-instance" ...

然而,在项目B中,它简单地说明了:

System.Collection.Generic.List'MyObjectType
尽管代码完全相同,但仍然沿着这些方向发展。在反序列化之前所以它肯定与配置文件有关,或者可能是Windows服务如何解释它。

由于代码是相同的,所以我没有引用任何可以提供帮助的代码,因为这是改变代码的情况。

我希望有人可以解释一下,因为它是Windows服务和Windows窗体共享.config文件。

修改

string temp = Settings.Default.MySettings;

在项目A =

中打印出临时值
...</xml version="1.0"?><MyValues xmlns:xsi="ht...

在项目B =

中打印出temp
System.Collections.Generic.List`1[ProjectA.MyClass]

(temp =一些XML值) 但是,另一个项目中的相同代码会给出一些对象类型的代码。尽管在纯文本中没有明确列出的对象类型?

(可能不会在早上回复)

1 个答案:

答案 0 :(得分:0)

我不能具体说明问题所在,因为你没有发布任何实际的代码,但我可以告诉你,某个地方依赖于隐式转换为string类型。这是您在列表上调用.ToString()时看到的内容。它可能在其他地方工作,因为您传递单个对象而不是List,并且您的类型会覆盖.ToString(),因此隐式字符串转换会产生一些有意义的内容。主要的是,一个案例使用单个对象,另一个案例是发送一组对象。