It depends a bit on context ;p If they have the exact same API, i.e. they are the same service at two endpoints, then maybe use one service (and change the URL manually), or use WCF which can re-use types between services.
However, a more generic approach would be to exploit partial class to make both implement a common interface, i.e. if they both have a .Foo property that you care about, you should be able to do:
namespace SomeNamespace {
public interface ICommon {
int Foo {get;}
}
}
namespace Webservice1Namespace {
partial class Webservice1 : ICommon { }
}
namespace Webservice2Namespace {
partial class Webservice2 : ICommon { }
}
// note we didn't add a .Foo implementation - that comes from the
// *other* half of the partial classes, as per the .designer.cs
This uses implicit interface implementation to map the Foo from Webservice1 and Webservice2 to ICommon. Now you can have an ICommon[] and add instances of either Webservice1 or Webservice2, and access the .Foo property of each.
Another approach, of course, is to use dynamic[], which would also allow you to access .Foo, but which throws type-safety out of the window in the process (along with anything that uses reflection, such as data-binding etc).