3
似乎每次dynamic
被一個通用方法的調用者使用,實際使用的類型是一個簡單的object
。例如,代碼:如何知道類型參數是否是動態的?
public static void Main()
{
Program.DoSomething<int>();
Program.DoSomething<object>();
Program.DoSomething<dynamic>();
Console.WriteLine("Press any key to continue...");
Console.ReadKey(true);
}
public static T DoSomething<T>() where T : new()
{
Console.WriteLine(
"The type is: {0}; equal to object: {1}.",
typeof(T).FullName,
typeof(T) == typeof(object));
dynamic result = new ExpandoObject();
result.Hello = "Hello";
result.Number = 123;
try
{
return (T)result;
}
catch (Exception)
{
Console.WriteLine("Can't cast dynamic to the generic type.");
return new T();
}
}
生產:
類型是:System.Int32;等於對象:假。
不能將動態轉換爲泛型類型。
該類型是:System.Object;等於對象:對。
該類型是:System.Object;等於對象:對。
在泛型方法中,如何確定類型參數是動態還是普通對象?
謝謝。順便說一句,如果有一個傳遞給方法的泛型類型的參數,'IDynamicMetaObjectProvider'會很有用。在我的例子中,只有返回值使用泛型類型。 –