나는이 디자인 문제에 대한 청결한 답변을 찾지 못했습니다. ".NET Framework design guidelines"도 아니고 "C# programing guidelines"도 도움을받을 수 없습니다.대리자 (람다 식) 대 인터페이스 및 추상 클래스
1)
// This what I provide
public abstract class AbstractDoSomething{
public abstract SomeThing DoSomething();
}
사용자는이 추상 클래스를 구현 필요 그들은 : 사용자가 정의하고이 같은 내 프레임 워크에 자신의 알고리즘을 통합 할 수 있도록 나는 기본적으로 API로 패턴을 노출해야 (나는 그것을 내 프레임 워크 내에서 전화를 사용할 수있는)
2)
,536DoSomething
방법을 구현해야 사용자는이 방법
DoSomething
클래스를 사용할 수 있습니다이 경우
public sealed class DoSomething{
public String Id;
Func<SomeThing> DoSomething;
}
:
나는이 또한 사용 대의원 acheived 수 있다는 것을 발견
DoSomething do = new DoSomething()
{
Id="ThisIsMyID",
DoSomething = (() => new Something())
}
질문
을 어느 이 두 가지 옵션 중 은 가장 쉽고 유용하며 가장 중요한 것은 API로 노출되는입니다. 1 경우
편집
: 등록이 방법으로 이루어진다는 (MyDoSomething
가정은 AbstractDoSomething
연장 :
MyFramework.AddDoSomething("DoSomethingIdentifier", new MyDoSomething());
: 등록은 다음과 같이 이루어진다 :
MyFramework.AddDoSomething(new DoSomething());
사용자가 프레임 워크에 AbstractDoSomethings을 어떻게 등록합니까? – dtb
@dtb 내 편집 내용을 참조하십시오 (코드도 약간 수정 됨) – GETah