Morris.Moxy는 C#에 Mixin 기능을 코드 생성기를 활용해 부여합니다. 믹스인은 클래스에 일부 기능을 주입할 수 있는 기능입니다. C#은 믹스인 기능이 없다가 C# 8의 인터페이스 기본 메서드를 통해 부분 지원합니다.
다음은 예시 코드 입니다.
| PersonName.mixin
@moxy
@attribute required int DefaultAge
@moxy
namespace {{ moxy.Class.Namespace }};
partial class {{ moxy.Class.Name}}
{
public string FullName => $"{GivenName} {FamilyName}";
public string GivenName { get; set; }
public string FamilyName { get; set; }
public int Age { get; set; } = {{ DefaultAge }};
}
| 믹스인 적용
[PersonName(DefaultAge: 42)]
public partial class TestPerson { }
| 사용
var testPerson = new TestPerson();
Console.WriteLine(testPerson.Age);
| 출력
42
partial
을 이용해 자연스럽게 클래스와 기능을 결합할 수 있으며 인터페이스 및 적절한 제네릭 형식 제약 조건(where)를 사용해서 기능을 일반화 시킨 믹스인도 가능할 것 같아 흥미로운 라이브러리 인 것 같습니다.