オブジェクトがC#のbuiltin data typeであるかどうかを確認したいと思っています。オブジェクトが組み込みデータ型であるかどうかをチェックする関数はありますか?
可能であれば、これらのすべてをチェックしたくありません。 、私はこれを行うにはしたくないんさ
:
Object foo = 3;
Type type_of_foo = foo.GetType();
if (type_of_foo == typeof(string))
{
...
}
else if (type_of_foo == typeof(int))
{
...
}
...
更新
私は再帰的にPropertyDescriptorをタイプが値を組み込みされない場合がありますPropertyDescriptorCollectionを作成しようとしています。だから私はこのような何かやってみたかった(注:これはまだ動作しませんが、私はそれに取り組んでいます):
public override PropertyDescriptorCollection GetProperties(Attribute[] attributes)
{
PropertyDescriptorCollection cols = base.GetProperties(attributes);
List<PropertyDescriptor> list_of_properties_desc = CreatePDList(cols);
return new PropertyDescriptorCollection(list_of_properties_desc.ToArray());
}
private List<PropertyDescriptor> CreatePDList(PropertyDescriptorCollection dpCollection)
{
List<PropertyDescriptor> list_of_properties_desc = new List<PropertyDescriptor>();
foreach (PropertyDescriptor pd in dpCollection)
{
if (IsBulitin(pd.PropertyType))
{
list_of_properties_desc.Add(pd);
}
else
{
list_of_properties_desc.AddRange(CreatePDList(pd.GetChildProperties()));
}
}
return list_of_properties_desc;
}
// This was the orginal posted answer to my above question
private bool IsBulitin(Type inType)
{
return inType.IsPrimitive || inType == typeof(string) || inType == typeof(object);
}
私は再帰的にPropertyDescriptorCollectionを作成したいのですが、型が組み込みかどうかを確認する必要がありました。プロパティの1つが組み込み型でない場合は、新しいコレクションを作成したいと考えました。病気を助けてくれる質問に何をしようとしていますか? – SwDevMan81
しかし、その決定はC#の仕様に基づいているのはなぜですか?なぜDecimalを一方向で扱いたいのですが、DateTimeやGuidを別の方法で扱いたいのですか? –
そうではありません、それは私の見解です。 System.ValueTypeもチェックする必要があります。 – SwDevMan81