私はこのデザインの質問に対するすっきりした答えを得られませんでした。私は".NET Framework design guidelines"でも"C# programing guidelines"でも助けを見つけることができませんでした。 私は基本的に、ユーザーがこのように私のフレームワークにそのアルゴリズムを定義し、統合することができるようにAPIとしてパターンを露光する必要があります。代理人(ラムダ式)対インタフェースと抽象クラス
1)
// This what I provide
public abstract class AbstractDoSomething{
public abstract SomeThing DoSomething();
}
ユーザーは、彼らは、この抽象クラスを実装する必要があります(私はそれを私の枠組みの中から呼び出して使用することができます)
2)
メソッドを実装する必要があります私は、これはまた、デリゲートを使用してacheivedできることを発見した:
DoSomething do = new DoSomething()
{
Id="ThisIsMyID",
DoSomething = (() => new Something())
}
質問
:この場合
public sealed class DoSomething{
public String Id;
Func<SomeThing> DoSomething;
}
、ユーザーは、このようDoSomething
クラスを使用することができますこれらの2つのオプションのうちは、簡単で使いやすく、最も重要なのは、APIとして公開するための最もわかりやすいです。 の場合
EDIT:
の場合MyFramework.AddDoSomething("DoSomethingIdentifier", new MyDoSomething());
:登録は次のように行われる登録がMyDoSomething
はAbstractDoSomething
を拡張仮定(このようにして行われます:
MyFramework.AddDoSomething(new DoSomething());
ユーザはフレームワークでAbstractDoSomethingsをどのように登録しますか? – dtb
@dtb私の編集を参照してください(ビットも同様に修正) – GETah