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

Showcase Your Apps on DevExpress.com

Highlight your business app and share your development experiences with the DevExpress community. To include your app in our upcoming App Showcase, please forward an application screenshot to clientservices@devexpress.com and tell us which DevExpress products you currently use within your organization.
No Comments

Please login or register to post comments.