Информация об изменениях

Сообщение Re[3]: Aspect Generator (по мотивам "Новости C#12") от 24.11.2023 7:33

Изменено 24.11.2023 17:30 IT

Re[3]: Aspect Generator (по мотивам "Новости C#12")
Здравствуйте, IT, Вы писали:

S>>Предлагаю еще добавить фичу обертки метода по комментарию.

S>>Часто нужно создать отдельную сборку с большей информацией о параметрах и возвратах в определенных местах

IT>Не понял.




// Помечаю метод каким то определенным комментарием
Method1();


И вызов метода превращается

public static void Method1_Interceptor()
{
// Aspects.MetricsAttribute
//
var __info__0 = new Aspects.InterceptCallInfo<Void>
{
MemberInfo = Method1_Interceptor_MemberInfo,
AspectType = typeof(Aspects.MetricsAttribute),
AspectArguments = Method1_Interceptor_AspectArguments_0,
};

using (Aspects.MetricsAttribute.OnUsing(__info__0))
{
try
{
OpenTelemetryAspect.Program.Method1();
}
catch (Exception __ex__)
{
__info__0.Exception = __ex__;
throw;
}
finally
{
__info__0.InterceptType = Aspects.InterceptType.OnFinally;
Aspects.MetricsAttribute.OnFinally(__info__0);
}
}
}


Причем другие вызовы этого метода меня не интересуют. Только в конкретном месте. Там может несколько методов, что бы получить более детальную информацию.
Re[3]: Aspect Generator (по мотивам "Новости C#12")
Здравствуйте, IT, Вы писали:

S>>Предлагаю еще добавить фичу обертки метода по комментарию.

S>>Часто нужно создать отдельную сборку с большей информацией о параметрах и возвратах в определенных местах

IT>Не понял.




// Помечаю метод каким то определенным комментарием
 Method1();


И вызов метода превращается

public static void Method1_Interceptor()
{
    // Aspects.MetricsAttribute
    //
    var __info__0 = new Aspects.InterceptCallInfo<Void>
    {
        MemberInfo      = Method1_Interceptor_MemberInfo,
        AspectType      = typeof(Aspects.MetricsAttribute),
        AspectArguments = Method1_Interceptor_AspectArguments_0,
    };

    using (Aspects.MetricsAttribute.OnUsing(__info__0))
    {
        try
        {
            OpenTelemetryAspect.Program.Method1();
        }
        catch (Exception __ex__)
        {
            __info__0.Exception = __ex__;
            throw;
        }
        finally
        {
            __info__0.InterceptType = Aspects.InterceptType.OnFinally;
            Aspects.MetricsAttribute.OnFinally(__info__0);
        }
    }
}


Причем другие вызовы этого метода меня не интересуют. Только в конкретном месте. Там может несколько методов, что бы получить более детальную информацию.