You learn something new every day

I encountered something today in C# that I’ve never seen before and it caught me off guard. In looking at the WSE 2.0 samples to understand how the transport mechanisms have changed, I came across the following in StockService:

Uri uri = new Uri("soap.tcp://" + System.Net.Dns.GetHostName() + "/StockService");

SoapReceivers.Add( uri, typeof(StockServiceRequestReceiver) );

You’re probably wondering, “What’s the big deal, Hambone?” On the surface, this doesn’t seem so odd until you look at the method signature for SoapReceivers.Add:

public static void Add(EndpointReference, SoapReceiver);

public static void Add(EndpointReference, Type);

public static void Add(EndpointReference, SoapReceiver, bool);

public static void Add(EndpointReference, Type, bool);

Nowhere does SoapReceiers.Add take a System.Uri, yet that’s what’s being passed in above. What makes this possible is an implicit operator on EndpointReference that takes a Uri:

public static implicit operator EndpointReference(Uri uri)

{

      return new EndpointRefernece(uri);

}

I hate to admit that I was responsible for conducting a number of classes internally on C# and a) never brought this up and b) it was never mentioned. In fact, this is the first time I’ve actually seen this in use. I’m interested in your feedback … how many of you use this C# feature in your development, and to what effect?