2009-04-03 9 views
2

オブジェクトに新しいプロパティを追加し、このオブジェクトを処理する別のクラスのメソッドを拡張するなど、追加する必要があるいくつかの追加機能があります。私は本当に変更したくない製品のソースコード(C#2.0)を扱っています。私はそれを拡張したいだけです。別のアセンブリを使用してC#コードを拡張する

これは私たちのコードであることを明確にするために、これを行うための別のアセンブリが理想的です。それは部分的なクラスのようだが、代議員は行く方法かもしれないが、これが可能かどうかはわからない。誰かが似たようなことをやったのですかまたは良い記事を知っていますか?

答えて

3

Decoratorのパターンを確認してください。これはまさにあなたが探しているものです。既存のクラスを継承し、追加のロジックを使用して継承することができます。基本機能を隠したい場合は、Proxyパターンもあります。

0

元のクラスを「部分的な」クラスにも変更する必要があります.2番目のアセンブリの名前空間が最初のものと一致し、両方のアセンブリがプロジェクトの参照であることを確認する必要がありますアセンブリを使用します。そこからあなたの意志に自由に拡張することができます。

+0

確かに、それを試して、20-30年のようにうまくいくと私に戻ってきてください。 – leppie

+0

@leppie:スマートをプレイするのではなく、自分の答えを提示してみませんか? @topic:私は確かに間違っていたようですが、異なるアセンブリの部分クラスは1つのクラスとして扱われません。間違った答えをおかけして申し訳ありません。 – gsnerf

+0

はい、部分はコンパイラの想像力です。コンパイル時には消えてしまいますので、部分クラスにアセンブリを渡すことはできません。 – Will

0

クラスから継承できますか、それとも封印できますか?継承は、既存のクラスを拡張するためのオブジェクト指向の方法です。

+0

はい、私は継承することができますが、それは私が(既存のコードに触れないように)変更する必要はありません、そのクラスへのすべてのコード参照です...避けられないようです... – degero

3

hfcs101と同様です。

いくつかの既存のオブジェクト指向設計パターンが与えられているクラスを拡張できるかどうかを確認してください。

を見てみましょう:あなたが密接にあなたの問題に一致するパターンを見つけることができるかどうかを確認してください

を。デコレータは最高の候補のように見えます。

+1

他のパターンのおかげで、これらの前に、デコレータはあなたと@Denis_Vuykaとして記載されています – degero

関連する問題