2013-05-03 21 views
0

我想要一個列表,其中Type.IsValueType將返回true的所有內置.NET Framework類型。有沒有一種方法可以生成該列表(也就是說,我可以從.NET內部獲取所有內置類型的列表)?根據Type.IsValueType爲值類型的內置.NET Framework類型的列表

我正在寫一些代碼,我試圖確定我是否已經通過某種形式的POCO或匿名類型,我會查看該對象的屬性,或者是否給出了一個值(或價值)類型,我會直接使用它的值。我已經知道,我將需要檢查對象是否輸入String,因爲我想使用它的值而不是查看它的屬性。我想確保沒有其他需要擔心的異常情況。

+1

值類型不一定只有一個值。它可以有任何數量的字段。你到底想做什麼? – 2013-05-03 14:06:16

+0

良好的通話。我正在使用'Object'的'ParamArray'(赦免VB語言)並將其用作SQL參數的源。如果你給我一個(String,Integer,Boolean),那麼我將使用這些參數(@ 0,@ 1,@ 2),但是如果你給我一個POCO或匿名類型,我會嘗試匹配@UserId到一個名爲UserId的屬性。 – 2013-05-03 14:13:17

+0

嗯...所以你受限於什麼SQL允許(你會發現什麼在System.Data.SqlTypes命名空間)無論如何。我認爲對知名類型進行硬編碼更容易,並且處理其餘的,無論是值還是引用類型(值類型也可以具有屬性)。 – 2013-05-03 14:18:21

回答

1

不知道這是否真的是有道理的,但你考慮「內置的,你可以從所有這是有關你的使用情況有類似

// do this for all assemblies you care about 
    Assembly assembly = ... // e.g. Assembly.LoadFrom(info.FullName); 
    foreach (var type in assembly.GetTypes()) 
    { 
    if(type.IsValueType) 
    { 
     ... // whatever 
    }      
    } 

這真的取決於組件枚舉值類型.NET Framework類型「。例如。是否內置WPF或ASP.NET MVC的類型?但是,您的用例對我來說似乎很陌生,我不確定我是否理解您要實現的目標。

+0

也許你可以只使用基本類型?即來自WPF的東西最終從Object繼承,你可以將所有這些「類型」的東西都視爲「Object」。或者會導致意想不到的結果? – 2013-05-03 14:19:22

+0

我不知道我是否得到了它 - 一切最終都從Object繼承(包括'System.ValueType'),所以我不明白它會如何幫助。 – 2013-05-03 14:33:17

+0

包含'Integer'? – 2013-05-03 14:44:30