我已經在C#中編寫了一個實現PostSharp的IAspectProvider
接口的類。我不明白的是現在我應該用它來做什麼。我似乎無法在PostSharp的網站上找到任何文檔,告訴我在編寫該類時如何處理這個類。如何連接IAspectProvider以便PostSharp使用它?
PostSharp是否會自動找到這個類,因爲它源自IAspectProvider
並使用它?還是有一個鏈接可用於我目前無法找到的頁面?
FWIW,該課程在下面提供。 (MethodTracingAspect
我們正在使用的培訓我們的定製方面。)
namespace LoggingSample
{
using System;
using System.Collections.Generic;
using System.Linq;
using PostSharp.Aspects;
internal class ProviderAspect : IAspectProvider
{
public IEnumerable<AspectInstance> ProvideAspects(object targetElement)
{
var type = (Type) targetElement;
return type.GetMethods()
.Where(m => type.IsAssignableFrom(typeof(IReportBuilder))
&& m.IsPublic
&& m.Name == "Execute")
.Select(m => new AspectInstance(targetElement,
new MethodTracingAspect()));
}
}
}
我想我理解了大部分內容(正如我發現的原始文章所述,涉及到一些心理體操)。但是,一旦寫完了,我還不清楚該怎麼處理這門課。您提供的鏈接示例僅提供了'IAspectProvider'的實現。這個方面是否需要從'AssemblyInfo.cs'明確引用?我需要裝飾一個或兩個類型的方面?或者PostSharp會在編譯時自動找到提供程序,並使用它,因爲它來自'IAspectProvider'? –
好吧,我已經用一個例子更新了答案。對不起,第一個答案並不完全清楚。 – AlexD
也你不需要assemblyinfo提供方面。一個例子是用IAspectProvider方面來裝飾一個類,並且它也會在類中使用所有方法(使用反射)來添加方面。您只需要任何入口點到您的代碼爲您的IAspectProviders運行 – Batavia