我有两个不同的应用程序,我使用GroupLab网络在它们之间进行通信。这个想法是有一个共享字典,当这个共享字典中的某些内容发生变化时,另一个应用程序会收到通知。通知部分起作用。这是问题。我在第一个应用程序中有以下代码。C#读取应用程序之间的序列化对象
TouchInfo t = new TouchInfo();
int.TryParse(txtXCoord.Text, out t.X);
int.TryParse(txtYCoord.Text, out t.Y);
this.sharedDictionary1["/pointOne"] = t;
其中TouchInfo
是struct
。存储在共享字典中的这个对象可以被两个应用程序访问。代码如下所示:
TouchInfo val = (TouchInfo)this.sharedDictionary1["/pointOne"]
尽管此代码在创建对象的应用程序中工作。我得到的第二以下错误:
{Unserializable object: problem: System.Runtime.Serialization.SerializationException: Unable to find assembly 'NetworkingTestProgramOne, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null'.
我意识到这个问题是因为系列化还存储连载它的程序的程序集信息。但我确实需要它通过不同的程序进行交流。我如何完成这项工作?
嘿,我从来没有这样做过。这是否意味着进入两个项目的项目属性并更改它以使它们具有相同的“程序集名称”但具有不同的名称空间?并创建第三个项目(一个类库项目),只包含共享类,并将其组合名称设置为相同的东西? – Aishwar
(to aip.cd.aish)“尽量避免使用可变结构” - 哦,并避免公共领域('out t.X'告诉我这是一个公共领域) –
没关系。得到它了。我创建了一个新的类库项目,并将输出的dll添加到两个项目中。 – Aishwar