Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

...ist nicht als serialisierbar gekennzeichnet. ???

1,539 views
Skip to first unread message

Volkan Senguel

unread,
Apr 6, 2009, 11:37:12 AM4/6/09
to
Hallo zusammen, wir benötigen hier Zugriff auf ein Element vom Typ
List<Queue_Data> (Eigenes Object) welches auf einem Server läuft.
Dieser stellt diverse Zahlen für verschieden Dinge bereit > Queues

Auf dem Servr werden die Daten so angeboten:

========================================================================================================================
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Linq;
using System.ServiceProcess;
using System.Text;
using System.Runtime.Remoting;
using System.Runtime.Remoting.Channels;
using System.Runtime.Remoting.Channels.Tcp;

using InboundQueueEIC_clientCom;
using infoDashboard_Objects;

namespace infoDashboard_QueueStatsService_EIC
{
public partial class QueueStatsService : ServiceBase
{
public QueueStatsService()
{
InitializeComponent();
}

protected override void OnStart(string[] args)
{

TcpChannel tcpChannel = new TcpChannel(9998);
ChannelServices.RegisterChannel(tcpChannel);

Type commonInterfaceType = Type.GetType("Queues");
RemotingConfiguration.RegisterWellKnownServiceType(commonInterfaceType,
"QueueStats", WellKnownObjectMode.Singleton);

InboundQueueEIC_clientCom.BusinessLogic.startServer();
}

protected override void OnStop()
{
InboundQueueEIC_clientCom.BusinessLogic.DisconnectFromEICServer();
}
}
}


public interface QueuesInterface
{
System.Collections.Generic.List<infoDashboard_Objects.Queue_Data>
GetQueueStats();
}

public class Queues : MarshalByRefObject, QueuesInterface
{
public System.Collections.Generic.List<infoDashboard_Objects.Queue_Data>
GetQueueStats()
{
return InboundQueueEIC_clientCom.BusinessLogic.lQueue;
}
}
========================================================================================================================

Die Daten werden auch in der List schönd gespeichert und mittels einer Test
App zugänglich.

Ich muss nun aber dies von einigen Clients machen und habe hierfür in einer
TestApp diesen Code mal implementiert um das ganze zu testen

========================================================================================================================
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

using System.Runtime.Remoting;
using System.Runtime.Remoting.Channels;
using System.Runtime.Remoting.Channels.Tcp;
using infoDashboard_Objects;

namespace _TestAppRemotingClient
{
public partial class Client : Form
{
List<Queue_Data> queues = new List<Queue_Data>();

public Client()
{
InitializeComponent();
}

private void Client_Load(object sender, EventArgs e)
{
TcpChannel tcpChannel = new TcpChannel();
ChannelServices.RegisterChannel(tcpChannel);
}


Type requiredType = typeof(MovieTicketInterface);

private void button1_Click(object sender, EventArgs e)
{
try
{
QueuesInterface remoteObjectQueues =
(QueuesInterface)Activator.GetObject(requiredType,
"tcp://PC001:9998/QueueStats");
queues = remoteObjectQueues.GetQueueStats();
}
catch (Exception exp)
{
textBox1.Text = "Connection to Server lost...";
}
}
}
}

public interface QueuesInterface
{
System.Collections.Generic.List<infoDashboard_Objects.Queue_Data>
GetQueueStats();
}
========================================================================================================================

Ich bekomme aber immer diese Fehlermeldung präsentiert:

"Der Typ "infoDashboard_Objects.Queue_Data" in Assembly
"infoDashboard_Objects, Version=1.0.0.0, Culture=neutral,
PublicKeyToken=null" ist nicht als serialisierbar gekennzeichnet."

Mit einem String oder Datetime etc. klappt das ganze wunderbar.

Die kriege ich es dazu damit mein Object auch Serialisierbar wird?

Danke für jeden Tip
Volkan

Karsten Samaschke

unread,
Apr 6, 2009, 11:53:31 AM4/6/09
to
Volkan Senguel schrieb:

> Die kriege ich es dazu damit mein Object auch Serialisierbar wird?

Entweder ISerializable implementieren, oder [Serializable] über die
Klassendeklaration schreiben und hoffen, dass die Standard-Formatter
damit klarkommen. ;-)

Mit freundlichen Gruessen / Best regards,

Karsten Samaschke
--
IT-Consulting, IT-Training, IT-Development
Web: http://www.ksamaschke.de
Blog: http://www.karsan.de
Family: http://www.familyblogger.de
Community: http://www.aspnetzone.de

Sent via MacBook / OS X 10.5 (Leopard)

Volkan Senguel

unread,
Apr 6, 2009, 2:48:48 PM4/6/09
to
Danke Karsten

Mit

using System;

[Serializable]
public class Employee {...


klappt dies wunderbar ;)

gruss
Volkan


"Karsten Samaschke" <kar...@samaschke.de> schrieb im Newsbeitrag
news:%23k3qW$stJHA...@TK2MSFTNGP02.phx.gbl...

0 new messages