Я написал класс на 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