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 の一時値の出力 =

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

プロジェクト B の temp の出力 =

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

(一時 = いくつかの XML 値) ただし、別のプロジェクトの同じコードは、オブジェクト型であるコードを提供します。プレーンテキストにもかかわらず、明示的にリストされているオブジェクトタイプはありませんか?

(朝まで返信できない場合があります)

4

1 に答える 1

0

実際のコードを投稿していないため、問題の場所を特定することはできませんが、string型への暗黙的な変換に依存している場所があることはわかります。.ToString()これは、リストを呼び出すときに表示されるものです。リストの代わりに単一のオブジェクトを渡し、型がオーバーライド.ToString()され、暗黙的な文字列変換が意味のあるものになるため、他の場所で機能する可能性があります。主なことは、1 つのオブジェクトを使用する場合と、オブジェクトのコレクションを送信する場合です。

于 2013-02-16T23:50:17.240 に答える