2016-12-16 5 views
1

まず、申し訳ありませんが、これは他の場所で回答されている場合。私は周りを見回しましたが、このトピックで見つけたスレッドとページは、シリアライズをかなり新しくしているのでかなり混乱しました。 私はインターネット上で機能を送信できるようにしたいC#アプリケーションを作っています。 Googleですばやく検索したところ、シリアライズが始まりました。私は次の方法でシリアル化して逆シリアル化しようとしました:のC# - シリアライズとデシリアライズ方法

public static string ObjectToString(object obj) 
{ 
    using (MemoryStream ms = new MemoryStream()) 
    { 
     new BinaryFormatter().Serialize(ms, obj); 
     return Convert.ToBase64String(ms.ToArray()); 
    } 
} 

public static object StringToObject(string base64String) 
{ 
    byte[] bytes = Convert.FromBase64String(base64String); 
    using (MemoryStream ms = new MemoryStream(bytes, 0, bytes.Length)) 
    { 
     ms.Write(bytes, 0, bytes.Length); 
     ms.Position = 0; 
     return new BinaryFormatter().Deserialize(ms); 
    } 
} 

しかし、文字列に変換しようとすると例外がスローされました。私はそれに[Serializable()]を追加して、メソッドは単純に何もしませんでした。

いくつかのより多くのGoogleをした後、私はC#で使用すると、デフォルトの方法でこれを行うことができないことがわかりました。それでは、これを行うことは可能ですか?もしそうでなければ、TcpClientを介してメソッドを送信する実用的な方法はありますか? 申し訳ありませんが、これは愚かな質問です。事前に

おかげで、

- マタイ

+1

分散コンピューティングの最初のルール:http://martinfowler.com/bliki/FirstLaw.html助けを –

答えて

1

メソッドが直列化されないので、なし。あなたはこれをすることはできません。

あなたはRPCコールをしようとしている場合は、名前とパラメータをシリアル化して、反対側でリフレクションを使用できるようにするか、WCFのような既存のフレームワークを使用するだけです。

+0

おかげで、あなたのオブジェクトを配布しないでください! DLLを使ってこれを行うことは可能ですか? – user52303

+0

@ user52303あなたは明確にできますか? DLLとネットワーキングは、同様のコンセプトのように – BradleyDotNET

+0

ではありません、その機能を利用するためにダウンロードすることができ、サーバー上のDLLのメソッドを持っています。コンパイル時に実装されているのか、動的に参照できるのか分かりません。 – user52303

関連する問題