.Net открытый исходный код, статический Aop вплетён (прямое изменение промежуточного языка IL), фреймворк, похожий на PostSharp (платный);
Реализует предварительные и последующие аспекты Aop и способ внедрения INotifyPropertyChanged.
Описание:
QQ группа открытого исходного кода: .net 开源基础服务 238543768 добро пожаловать в общение
Этот aop является исследовательским по своей природе и в настоящее время не используется в официальных проектах (в отзывах об открытом исходном коде кажется, что есть проблемы с окружающей средой). Если вы изучаете, рекомендуется посмотреть код. Если это официальный проект, то пока не рекомендуется.
Примечание:
Скомпилируйте проект, а затем запустите и отладьте его напрямую.
Примечание:
Откройте vs → свойства проекта → PostBuildEvent, настройте скрипт запуска aop. Например: xcopy $(OutDir)BSF.Aop.dll $(ProjectDir)packages.BSF.Aop\ /Y call "$(ProjectDir)packages.BSF.Aop\BSF.Aop.ILRun.exe" msgbox $(TargetDir)
Откройте vs → свойства проекта → PostBuildEvent, настройте скрипт запуска aop (OpenApi.Test.Web заменить конкретным именем проекта). Например: xcopy $(SolutionDir)\OpenApi.Test.Web\bin\BSF.Aop.dll $(SolutionDir)\OpenApi.Test.Web\packages.BSF.Aop\ /Y call "$(SolutionDir)\OpenApi.Test.Web\packages.BSF.Aop\BSF.Aop.ILRun.exe" msgbox $(SolutionDir)\OpenApi.Test.Web\bin\
public class AroundAopTest
{
[MyAroundAop]
[AttributeInfo(Des = "测试2")]
public void Method(TempInfo info, out int b,int a=1)
{
a = 222;
b = 3;
System.Console.WriteLine("Hello world!"+a);
}
}
public static class AroundAopTest2
{
[MyAroundAop][AttributeInfo(Des ="测试")]
public static void Method2(TempInfo info, int a = 1)
{
a = 222;
System.Console.WriteLine("Hello world!" + a);
}
}
public class MyAroundAop : Aop.Attributes.Around.AroundAopAttribute
{
public MyAroundAop()
{
}
public override void Before(AroundInfo info)
{
var att = info.Method.CustomAttributes.ToList()[0];
info.Params["a"] = 55;
System.Console.WriteLine("before" + info.Params["a"]);
}
public override void After(AroundInfo info)
{
System.Console.WriteLine("after"+ info.Params["a"]);
}
}
public class TempInfo
{
public int T1 { get; set; }
}
public class AttributeInfo : System.Attribute
{
public string Des { get; set; }
}
[NotifyPropertyChangedAop]
public class User
{
public string Name { get; set; }
public int Age { get; set; }
[NoAop]
public int B { get; set; }
}
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )