我正在尋找一種方法來對待所有.Net數據類型一致,所以我可以創建下面的模式,其中任何類型實施IGetValue<out T>
將投擲到IGetValue<object>
。出於某種原因,如果T是struct
,它不起作用,我不明白爲什麼。有沒有一種方法可以實現以下模式?我需要一個通用的類/接口任何.Net數據類型
public interface IGetValue<out T>
{
T Value
{
get;
}
}
public class GetValue<T> : IGetValue<T>
{
public GetValue(T value)
{
_value = value;
}
private T _value;
public T Value
{
get { return _value; }
}
}
class Program
{
static void Main(string[] args)
{
IGetValue<string> GetString = new GetValue<string>("Hello");
IGetValue<int> GetInt = new GetValue<int>(21);
//This works!!!
if (GetString is IGetValue<object>)
{
Console.WriteLine("GetValue<string> is an IGetValue<object>");
}
else
{
Console.WriteLine("GetValue<string> is not an IGetValue<object>");
}
//This doesn't work!!! Why????
if (GetInt is IGetValue<object>)
{
Console.WriteLine("GetValue<int> is an IGetValue<object>");
}
else
{
Console.WriteLine("GetValue<int> is not an IGetValue<object>");
}
Console.ReadKey();
}
}
編輯:
我意識到發生了什麼,我想在這裏完成,似乎含糊其辭,但是這是一個更大的設計,其解釋是太冗長的一部分。我需要的是讓我的所有IGetValue<T>
與一個名爲「Value」的屬性共享一個通用類型或接口,並返回一個object
。爲什麼是冗長的部分。
對象的價值是非常基本的概念。你想在這裏完成什麼? – 2011-04-16 10:41:48