Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to inject method to auto property in .Net Framework

I have some class Foo with many properties:

public class Foo
{
    public int Property1 { get; set; }

    public int Property2 { get; set; }

    public int Property3 { get; set; }
}

In other class I have some method, e.g.

public void SomeMethod()
{
    //...
}

How to inject this method to every setter of properties in the class Foo? I use .Net Framework 2.0

like image 429
Anton Kandybo Avatar asked Nov 28 '25 00:11

Anton Kandybo


1 Answers

I don't think there is a way to do that at runtime with reflection. What you would probably want to do is use an AOP (aspect-oriented) approach, but that too isn't really supported by the .NET framework. You could use PostSharp to do it, if you don't mind using a compiler extension, or look into using Unity2 to do AOP.

Edit: You could also consider Castle DynamicProxy. Or, if you have a firm grasp of DynamicMethods and IL code, you could make your own proxy generator class.

However, I think in most cases, you will have to code the rest of your application appropriately to handle the proxies. In other words, instead of doing:

Foo f = new Foo();
f.Property1 = 123;

You would have to do something like:

Foo f = Generator.GetProxy<Foo>(); // this code is fake. just indicates that you need to get an instance of Foo from a proxy generator, be it DynamicProxy or Unity or whatever.
f.Property1 = 123;
like image 188
CodingWithSpike Avatar answered Nov 29 '25 22:11

CodingWithSpike



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!