New CodeRush Community Plugin – DX_GenerateProxy

DX_GenerateProxy

Generates a new Proxy class P based on source class S

What?

What this amounts to is a new class P which is given properties and methods matching the public ones that are possessed by S.
When methods or properties of S are called their implementation defers to the instance of P held internally.

Why?

  • I’m beginning to prefer working in terms of interfaces where possible. I like to mock interfaces rather than classes where possible.
  • I don’t like to modify generated client-side web-service code. This therefore means that I don’t like to extract interfaces from said code.

The solution to this problem is to wrap the client-side web-service code in a proxy of my own from which I can extract an interface without having to alter the client-side web-service itself..

So given a web-service (W1), I can create a proxy (W1_Proxy) with all the same methods and properties as the original class. I can extract an interface from W1_Proxy and write my client-side code in terms of this interface. During testing I can implement this interface a second time in a test class (or more likely I can mock the interface), and pass this to the same code.

This gives me

  • Client code that doesn’t depend on a specific implementation of a service
  • Client code Tests that don’t depend on the web-service in order to run and prove my code works.
  • A good feeling of having done things the right way.

Limitations

Currently this CodeProvider only acts on Class declarations for which you have source code. a Later revision will add a facility to generate a proxy for compiled types.

Example

Let’s start with the following code…

GenerateProxyClass_Before

Place the caret on the name of the class and then press your CodeRush Refactor key

GenerateProxyClassSmartTagMenuItem

…and the following code will be generated for you…

GenerateProxyClass_After

Download DX_GenerateProxy

no comments
No Comments

Please login or register to post comments.