2009-04-02 5 views
0

私はさまざまな名前空間にある次の形式のクラスをたくさん持っています。これらのクラスのインスタンスは、ネットワーク上でシリアル化され、シリアル化されていないオブジェクトです。別の名前空間でC#コードのメソッドをドキュメントから隠すにはどうすればよいですか?

public class Foo:INetSerializable 
{ 

    public void ReadObjectData(Streamer stream) 
    { 

    } 

    public void WriteObjectData(Streamer stream) 
    { 


    } 
} 

、私はこれらのインスタンスをデシリアライズ/シリアライズするためにいくつかの基準を使用してディスパッチャクラスを持っています。

しかし、私はユーザーに私のドキュメントでこれらのメソッドを見せたくありません。 Dispatcherがそれらにアクセスできないので、私はこれらの人を内部にできません。

私はVisual Studio 2005を使用しているので、C#3.0を利用することはできません。

どうすればいいですか?


別のエラー:

私がfooから継承し、次は私にこのエラーを与えている、例えば読むとWriteObjectDataをオーバーライドするクラスに対処するにはどうすればよい: タイプはありませんインターフェイスを実装しないINetSerializable

public class Bar:Foo 
    { 

     public void ReadObjectData(Streamer stream) 
     { 

     } 

     public void WriteObjectData(Streamer stream) 
     { 


     } 
    } 
+0

Dispatcherが別の名前空間にあると言うと、同じアセンブリ内にありますか?名前空間ではなく、アセンブリからアクセス可能な内部手段。 –

+0

同じアセンブリですが、異なるインターフェイスにあります。内部平均、名前空間あたりではないのですか、それともJavaと混同していますか? –

+0

いいえ、スティーブは内部が組み立て範囲を持っていると述べています。内部を保護することもできます。 :-) –

答えて

1

明示的なインターフェイスi mplementation。私は構文は、それが「公共」と言っていないこと

void INetSerializable.ReadObjectData(Streamer stream) 

注だろうと考えているので、それは公共のではありません。インターフェイス経由でのみアクセスできます。

+0

誰かがインタフェースを介してクラスをインスタンス化する場合、つまりINetSerializable obj = new Foo();これらはユーザには見えないでしょうか? –

+0

はい、彼らは - しかし、私はほとんどの人がそれをしないと思う。少なくとも通常の使用のために途中で取り除かれます。実際に呼び出されることを止めることはできません。 –

+0

右。彼は、ユーザーにその方法を見せたくないと言ったが、Dispatcherに電話することができるようにしたいと言った。 –

関連する問題