2012-06-08 4 views
0

Ну, во-первых, я смотрел в Интернете уже более 2 часов, но я не мог найти полезного ответа на мою проблему. Ну, это довольно просто: У меня есть программа Client-Server, которую мне нужно перечислить на сервере с помощью Remoting и Form (я знаю о WCF, но это не проблема). Ну, у меня есть все каталоги/папки для каталогов, работающие нормально (тестирование без Remoting, на моем собственном ПК), но когда я попытался «удалиться», мне тяжело.Сериализация формы в C# с использованием Remoting

Прежде всего: я использую http как канал, и регистрация и активация в порядке. По крайней мере, я думаю, что я использую:

RemotingServices.Marshal(Server,"ListaArquivos") 

на сервере и

server = (Server)Activator.GetObject(typeof(ServerDLL.Server), "http://localhost:12345/ListaArquivos") 

в клиенте, где сервер является .dll (MarshalByRefObject).

Мои шаги:

  1. У меня есть DLL-класс (наследуемый MarshalByRefObject), который содержит все методы, которые я называю в ступеньках клиент-сервер. 1 из этих методов возвращает TreeNodeCollection и ...
  2. В клиентской форме я вызываю этот метод, и я пытаюсь вставить эту коллекцию в форму, но именно тогда я получаю «Windows.Form.TreeNodeCollection» blabla " не сериализуемым ".

И это мое сомнение, как я могу это сделать? PS-> Моя ссылка проекта: My Explorer

+1

вы сериализация данные или формы? данные - это одно, это обычное дело. но если вы пытаетесь отправить форму через провод ... это совсем другая история. Один, которого я бы избегал. –

ответ

1

Если все, что вы хотите, это список архивов, вы должны отправлять только список файлов, скорее всего, как строковый массив. Ваш TreeNodeCollection должен быть сконструирован на стороне клиента от.

Если вам нужно отправить больше информации, чем простые массив строк (то есть вам нужна древовидная структура), определить простой тип данных для передачи информации:

[Serializable] 
class Node 
{ 
    public string Name; 
    public Node[] Children; 
} 
+0

Что вы хотите о Simon? Почему на стороне клиента, если я хочу получить файлы с сервера? Я не понимаю! Спасибо за помощь до сих пор! – Leonardo

+0

Список файлов поступает с сервера, поэтому список файлов должен переходить от сервера к клиенту с помощью удаленного доступа, но элементы пользовательского интерфейса (т. Е. «TreeNodeCollection») должны быть сконструированы клиентом. Вы не хотите отправлять элементы пользовательского интерфейса через удаленный доступ. –

1

Вы можете взглянуть на этом проекте: http://www.codeproject.com/Articles/24508/How-to-Serialize-a-TreeNode-Object

В принципе, вы можете сделать обертку для любого класса и сделать его сериализацию путем добавления [Serializable] атрибута

[Serializable] 
public class MyClass : InheritedClass 
{//Your code} 
+0

Но я использую форму, я пытался поставить [Serializable], но ничего не происходит. Учебник наследуется от TreeNodeCollection, но в моем проекте я возвращаю TreeNodeCollection и ListView, поэтому мне нужно создать 2 разных класса, что не очень хорошо ... Любые другие идеи? Спасибо за помощь! – Leonardo

Смежные вопросы