-1

IsPrimitive と一連の "||" を使用せずに、C# で基本/コア型を取得する方法を探しています。基本的には、小数、日時、文字列を含めたいのですが、特にそれらを探したくありません。

オブジェクトの基本型をチェックし、それがオブジェクトから継承されているかどうかを確認する効果のあるものを見たことを覚えています。

誰かがこれを行う方法を正しい方向に向けることができますか?

また、このメソッドはプリミティブの nullable をどのように分類しますか?

4

1 に答える 1

2

すべての基本的なデータ型のリストを取得したい場合 (これらは基本的なものではなく、他の構造体と比べて動作が少し異なるだけです)、 を使用する必要がありますIsPrimitive。を使用したくないことは理解できまし||たがIsPrimitive、私には非常に理にかなっています。

また、DateTime基本的/原始的と見なされる正当な理由はありません。DateTime通常の構造体です。

これが私が思いつくことができる最良の方法です:

List<Type> types = typeof(string).Assembly.GetTypes()
                   .Where(t => t.IsPrimitive).ToList();
types.Add(typeof(string));
types.Add(typeof(decimal));

mscorlib ( typeof(string).Assembly) で任意のタイプを検索し、プリミティブのみを選択します (System.DateTimeリストにはありませんが、必要に応じて追加できます)。基本型と見なされる可能性があるため、stringおよびdecimal型が含まれています。

于 2013-02-14T17:09:07.603 に答える