-
Notifications
You must be signed in to change notification settings - Fork 45
UsingAdvices
Peter Bons edited this page Nov 21, 2019
·
3 revisions
Usually, you will just set the attributes to target method or property
[ADummyPropertyAdvice]
public int AnAdvisedProperty { get; set; }
[ADummyMethodAdvice]
public void MethodTest()
{
}
to target a type set the attribute at type level
[ADummyTypeAdvice]
public class SomeClass
{
...
}
to target all types in an assembly set the attribute at assembly level
using System;
[assembly: ADummyAdvice]
namespace SomeNameSpace
{
public class SomeClass
{
...
}
}
You can also intercept all calls to a given interface, even if it is external to your code.
There is a special extension method named Handle<TInterface>()
which applies to advices.
public class ADummyAdvice: Attribute, IMethodAdvice
{
public void Advise(MethodAdviceContext context)
{
// DO what you want, but...
// DON'T call context.Proceed(), because there is no implementation
}
}
public void DoSomethingWithIt()
{
var advice = new ADummyAdvice();
ISomeInterface advisedInterface = a.Handle<ISomeInterface>();
// all calls to advisedInterface will go through the ADummyAdvice, and you'd better intercept them.
}
Mr. Advice is sponsored by Arx One and available as a NuGet package