2009-04-27 4 views
2

オブジェクトを取り込み、現在の状態を記録し、オブジェクトを更新し、別のクラスに渡す必要があるクラスを作成しています。唯一の問題は、あなたが1つのクラスから継承することができ、私は自分のプロジェクトでクラスを継承する必要があるということです。私はSystem.IO.Streamに興味があります。なぜなら、必要ならばこのクラスを自分のスレッドに移すことができるからです。主な問題は、System.IO.Stream用のインターフェイスがあるかどうかです。そうでない場合、私が依存するプロジェクトに不可欠なデータを犠牲にすることなく、私が望む機能を得る方法がありますか? (私は少しdiscoherentを鳴らす場合、私はどのように言葉この質問をする本当にわからないごめんなさい。)System.IO.Stream用のインターフェイスはありますか?

答えて

5

IEnumerable<T>がより良いフィット感あるようですね - ストリームは周りバイトを渡すために良いですが、イテレータより一般的なオブジェクトストリームを表すのに適しています。

おそらくC#イテレータブロック(yield文など)でストリーム(たとえばソケット)やオブジェクトを読み込むものが必要です。次に、IEnumerable<T>の処理関数やフィルタなどを使用して、後でソケット(または他のバイトストリーム)に吹き戻すことができます。

質問に答えて - いいえ、Streamはインターフェイスを持っていませんが、あなたの質問のスレッド部分との関連性ははっきりしません。非同期IOに興味がありますか?

+0

私はIEnumerable で対戦して報告します。私の問題の一部は、私が48時間働いていて、疲れているということです。 –

+2

IEnumerable を読んだ後、これはもっとうまくいくでしょう。ありがとうございました。 –

+0

良い - しかし、それを試す前にベッドに行く:) –

1

なぜStream用のインターフェイスが必要ですか?インターフェイスを実装してもクラスの機能は提供されませんが、他のクラスにその機能を提供していることを伝えるだけです。実際に複数の継承(両方から機能を取得できるように2つの基本クラス)が必要な場合は、は基本クラスを必要とします。必要なのは、Stream自体のサブクラスです。

public class MyObject : Base Object 
{ 

} 

public class BaseObject : Stream 
{ 

} 

などです。

背景/文脈が役立つかもしれません。

0

あなたがここでやろうとしていることを理解することは本当に難しいです。

これは、継承での集計の候補のようです。 System.IO.Streamを拡張する代わりに、使用するオブジェクトに1つを渡すのはなぜですか?これは、プロパティまたはget/setメソッドである可能性があります。オブジェクトを別のスレッドに渡すと、ストリームはそれを取得します。

関連する問題