Note that these constraints can be overridden by code, extension method to convert anything to anything
class Program
{
static void Main(string[] args)
{
IW<String> iwStr = new W<string>("Test");
IW<object> iwObj = iwStr.ToObject2();
}
}
public interface IW<T>
{
T W { get; }
}
public class W<T> : IW<T>
{
T _w;
public W(T w)
{
_w = w;
}
T IW<T>.W
{
get { return _w; }
}
}
public static class Ext
{
public static IW<object> ToObject2(this IW<string> iw)
{
return new W<object>(iw.W);
}
}
Friday, August 8, 2014
Covariant and Contravariant
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment