У меня есть два разных приложения, и я использую GroupLab Networking для связи между ними. Идея заключается в том, что есть общий словарь, и когда что-то меняется в этом общем словаре, другое приложение получает уведомление. Часть уведомлений работает. Вот проблема. У меня есть следующий код в первом приложении.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