2009-08-04 8 views
1

私はWindowsフォームプロジェクトにdllファイルを含めました。 1.特定のクラスを完全に上書きすることはできますか? 2. dllファイル内の特定のクラスに新しいメソッドを追加することはできますか? 3. dllのクラスのメソッドをオーバーライドすることはできますか?dllファイルのクラス内のメソッドをオーバーライドすることはできますか?

代わりに避けたい: 私は静的な新しいメソッドを作成するために拡張メソッドを使うことができます。 また、特定のクラスを継承し、派生クラスに新しいメソッドを追加することもできます。

私が達成しようとしているもの: 私は今すぐプロジェクトを作成し、dllファイルとして大きなプロジェクトに追加する必要があります。 しかし、来月は元のプロジェクトにさらに機能を追加する必要があると言われています。私はこれについて最善の方法を理解しようとしています。 小さなプロジェクトはmvcデザインに基づいています。

+0

オーバーライドまたはインターセプト? –

+0

よくメソッド呼び出しをインターセプトする方法がある場合は、代替メソッドを実行し、元の呼び出しメソッドに値を返します。次に、どのようにしたらよいか知りたいです。 –

+0

どのクラスを上書きしようとしていますか?それがNamespace1.dllのNamespace1.Class1クラスであれば、Namespace1.Class1を一から書き直してNamespace1.dllをドロップし、リフレクションを使用して他の呼び出しを傍受し、バックエンドに渡します。 – maxwellb

答えて

2

クラスライブラリのクラスから継承している仮想メソッドを確実に上書きすることができます。これは、たとえばobject.ToString()を上書きするといつでも実行できます。

あなたは「クラスを完全にオーバーライドすることはできませんが」 - それが何を意味するのかわかりません。同様に、既存のクラスにメソッドを追加することはできませんが、次のことができます。(クラスから別の方法(ただし、状態、およびなしのプロパティ)

  • 派生を追加するために「ふり」する

    • 使用拡張メソッド

    達成しようとしていることを教えてもらえれば、進め方について助言するのが簡単になります。

    編集:元のプロジェクトに機能を追加する必要がある場合は、元のプロジェクトに追加するだけです。後でそのプロジェクトを変更できない理由はありますか?私は 今のプロジェクトを作成し、dllファイルとして 大きなプロジェクトに追加する必要があります。私が達成しようとしている何

  • +0

    あなたは実際にICorProfilerと多くの頭痛で「完全にクラスを上書きする」ことができます。また、ICorDebug –

    +2

    @Samで上書きすることもできます。プロファイリングAPIやデバッグAPIに何かを付けてプロダクションアプリケーションを実行することをお勧めしますか?十分な時間と努力で*常に*何かをすることができますが、私はJonがあなたがどんな賢明な方法でもこれを行うことができないと考えることは安全だと思います。 –

    +0

    グレッグの前提のために+1: –

    0

    。 プロジェクトには、来月に 個の機能を追加する必要があることが伝えられています。私は に行くことを試みていますこれについて行くための最善の方法を把握 これ。より小さいプロジェクトは mvc designに基づいています。

    現在のベストプラクティスは、制御の反転を使用することです(例えば。ninject)こんなもののために、あなたはすべてのあなたの依存関係のための中心的な場所を持っている場合は、ビットを傍受、実行時にしかし、あなたが好きなそれらを配線することができそしてあなたが望むように作品。

    関連する問題