I have created a pretty complicated app using some sort of "factory" design pattern. That way, i have interface defining a class, i have a class implementing the interface and i have a static class with static method for creating an instance. That static method (factory method) returns interface type, and only factory class can access my type class. So, if i have private class A, i'll have public interface IA and static factory class Factory. "Factory" class is the only one that can access "A", and it returns type "IA". That way, entire project is working using interfaces (for example "IA"), passing interfaces as arguments and so long. Simply put, my app is NEVER using class "A" except in factory class.
Now, the tricky part - i have decided to split my app to client and server part. Those to parts will communicate using WCF. But i have a problem - with WCF i can't use interfaces as return types / arguments like i did in WHOLE CODE SO FAR.
Please is there ANY way to make my project work without changing the very base of my "know-only-interface" code?