0

我有 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 服务如何解释它。

实际上没有任何我可以引用的代码可以提供帮助,因为代码是相同的,因为它是改变代码的环境。

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

编辑:

string temp = Settings.Default.MySettings;

在项目 A 中打印出 temp =

...</xml version="1.0"?><MyValues xmlns:xsi="ht...

打印项目 B 中的温度 =

System.Collections.Generic.List`1[ProjectA.MyClass]

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

(可能要到早上才回复)

4

1 回答 1

0

我无法具体说明问题出在哪里,因为您没有发布任何实际代码,但我可以告诉您,您在某个地方依赖于对string类型的隐式转换。这是您在调用.ToString()列表时看到的。可能它在其他地方也有效,因为您传递的是单个对象而不是列表,并且您的类型会覆盖.ToString(),因此隐式字符串转换会产生有意义的结果。主要的是,在一种情况下您使用单个对象,而在另一种情况下您发送对象集合。

于 2013-02-16T23:50:17.240 回答