Metalama 발표: 최신 Roslyn 기반 메타 프로그래밍 프레임워크 | Gael Fraiteur

postsharp의 Gael Fraiteur님이 Metalama를 발표하는 글을 게시했습니다.

Metalama는 간단한 사용으로 사용자 코드에 추가 코드를 주입하는 등의 메타 프로그래밍을 할 수 있게 합니다. 소스 생성기를 이용한 것은 아니고 Roslyn을 이용해 구현되었습니다.

다음은 Metalama의 로그 관련 예시 입니다.

| Aspect 코드 : meta를 통해 대상 코드와 결합됩니다.

using Metalama.Framework.Aspects;
using System;

namespace Doc.SimpleLogging
{
    public class SimpleLogAttribute : OverrideMethodAspect
    {
        public override dynamic? OverrideMethod()
        {
            Console.WriteLine( $"Entering {meta.Target.Method.ToDisplayString()}" );

            try
            {
                return meta.Proceed();
            }
            finally
            {
                Console.WriteLine( $"Leaving {meta.Target.Method.ToDisplayString()}" );
            }
        }
    }
}

| 대상 코드

using System;

namespace Doc.SimpleLogging
{
    internal class TargetCode
    {
        [SimpleLog]
        public void Method1()
        {
            Console.WriteLine( "Hello, world." );
        }
    }
}

| 변환된 코드

using System;

namespace Doc.SimpleLogging
{
    internal class TargetCode
    {
        [SimpleLog]
        public void Method1()
        {
            Console.WriteLine($"Entering TargetCode.Method1()");
            try
            {
                Console.WriteLine("Hello, world.");
                return;
            }
            finally
            {
                Console.WriteLine($"Leaving TargetCode.Method1()");
            }
        }
    }
}

https://blog.postsharp.net/post/announcing-metalama-preview-3.html

3개의 좋아요