我正在使用以下方法。如果已知爲Int64,如何將Int64類型的值提供給Generic類型?
public static Generic Get<Generic>(this object self)
{
try { return (Generic)self; }
catch (Exception) { return default(Generic); }
}
一個新的要求說,如果一個的Int64是空它需要被映射到-13。我試圖通過返回所述固定值來處理它,如果類型是Int64像這樣。
public static Generic Get<Generic>(this object self)
{
if (self == null && typeof (Generic) == typeof (long))
return -13;
try { return (Generic)self; }
catch (Exception) { return default(Generic); }
}
但是,編譯感到不舒服,因爲它擔心,我會回來-13當通用類型是不符合稱值。我如何解決它?
我試着用谷歌搜索自定義默認值,但得到了納達。
難道就沒有別的辦法嗎?演員陣容看起來非常醜陋......我可以忍受它,但我想知道這是一種變通還是**的方式。 – 2014-10-22 08:17:59
@KonradViltersten我個人還沒有找到另一種不能解決的辦法。如果你想避免只在句法上進行雙重鑄造,那麼你可以在頂部創建一個'object'局部變量,將數字賦給它並在稍後返回該變量的值(先將其轉換爲'Generic')。但我不確定有什麼方法可以避免雙重轉換。 – 2014-10-22 08:20:57