2

私はこのように定義されたクラスを持っています:

public class Company
{
  public Int32 OrganisationID {get;set;}
  public CompanyStatus OrganisationStatus {get;set;} 
  // note that CompanyStatus is my custom type
}

次に、コードをにコンパイルしますEntity.dll。以下のコードを使用すると、として取得 ((System.Reflection.MemberInfo)(properties[1])).NameされCompanyStatusます。すべてのプロパティを動的に読み取っているので、それがカスタムタイプであるかどうかをどのように判断できますか?

Assembly objAssembly = Assembly.LoadFrom(@"Entities.dll");

var types1 = objAssembly.GetTypes();

foreach (Type type in types1)
{
    string name = type.Name;
    var properties = type.GetProperties(); // public properties
    foreach (PropertyInfo objprop in properties)
    {
        // Code here
    }
}
4

1 に答える 1

4

IsPrimitiveプロパティを使用して、プロパティの型がプリミティブ型または文字列ではないかどうかを確認します

if(objprop.PropertyType.IsPrimitive || objprop.PropertyType == typreof(string))

MSDNから:

プリミティブ型は、Boolean、Byte、SByte、Int16、UInt16、Int32、UInt32、Int64、UInt64、IntPtr、UIntPtr、Char、Double、および Single です。

また、プリミティブ型の配列などを確認する必要がある場合もあります。型が別の型をラップしているかどうかを確認するには、次を使用します。

if(objprop.PropertyType.HasElementType)
    var t2 = objprop.PropertyType.GetElementType();
于 2012-12-11T15:37:18.953 に答える