간혹 "유창한"방식으로 작성하고 싶은 WPF C# 코드가 있습니다.상속 된 속성에 대한 Fluent WPF API
예를 들어, 내가 설정 이럴땐 Window
포함하는 ScrollViewer
:
static class FluentScrollViewer
{
public static ScrollViewer SetContent(this ScrollViewer obj, object val)
{ obj.Content = val; return obj; }
}
static class FluentWindow
{
public static Window SetContent(this Window obj, object val)
{ obj.Content = val; return obj; }
}
:
new Window()
.SetContent(
new ScrollViewer()
.SetContent(
...))
, 나는 이와 같은 확장 방법을 사용하고 API의 종류를 달성하기 위해 이제 Window
및 ScrollViewer
은 ContentControl
에서 Content
속성을 상속합니다. 그러나 각 클래스에 대해 SetContent
확장 메서드를 별도로 정의해야했습니다.
static class FluentContentControl
{
public static ContentControl SetContent(this ContentControl obj, object val)
{ obj.Content = val; return obj; }
}
을 다음과 같이 사용 : :이 대신 같은 뭔가를하려고하면
new Window().SetContent(...)
SetContent
방법은 물론 Window
을 반환하지 않습니다.
ContentControl
을 통해 SetContent
을 정의하고 유형을 제외하고는 유사한 개별적으로 speciallized 된 메소드를 많이 정의하지 않도록 "올바른 일"을 수행 할 수 있습니까?
가능한 중복 [ Fluent 인터페이스 및 상속 C#] (http://stackoverflow.com/questions/2278781/fluent-interfaces-and-inheritance-in-c-sharp) – dharmatech