我有一个包含许多属性的类,我需要找到一种方法来计算它拥有的属性数。我想这样做,因为类读取CSV文件,如果属性数(csvcolumns)小于文件中的列数,则需要进行特殊操作。以下是我班级的样本:
public class StaffRosterEntry : RosterEntry
{
[CsvColumn(FieldIndex = 0, Name = "Role")]
public string Role { get; set; }
[CsvColumn(FieldIndex = 1, Name = "SchoolID")]
public string SchoolID { get; set; }
[CsvColumn(FieldIndex = 2, Name = "StaffID")]
public string StaffID { get; set; }
}
我试过这样做:
var a = Attribute.GetCustomAttributes(typeof(StaffRosterEntry));
var attributeCount = a.Count();
但是这次失败了。非常感谢您提供的任何帮助(链接到某些文档,或其他答案,或只是建议)!
答案 0 :(得分:13)
请使用以下代码:
Type type = typeof(YourClassName);
int NumberOfRecords = type.GetProperties().Length;
答案 1 :(得分:9)
由于属性位于属性上,因此您必须获取每个属性的属性:
Type type = typeof(StaffRosterEntry);
int attributeCount = 0;
foreach(PropertyInfo property in type.GetProperties())
{
attributeCount += property.GetCustomAttributes(false).Length;
}
答案 2 :(得分:0)
这是未经测试的,只是在我的头顶
System.Reflection.MemberInfo info = typeof(StaffRosterEntry);
object[] attributes = info.GetCustomAttributes(true);
var attributeCount = attributes.Count();
答案 3 :(得分:0)
使用Reflection你有一个GetAttributes()方法,它将返回一个对象数组(属性)。
因此,如果你有一个对象的实例,那么使用obj.GetType()获取类型,然后你可以使用GetAttributes()方法。