Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do I get the count of attributes that an object has?

I've got a class with a number of attributes, and I need to find a way to get a count of the number of attributes it has. I want to do this because the class reads a CSV file, and if the number of attributes (csvcolumns) is less than the number of columns in the file, special things will need to happen. Here is a sample of what my class looks like:

    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; }
    }

I tried doing this:

var a = Attribute.GetCustomAttributes(typeof(StaffRosterEntry));
var attributeCount = a.Count();

But this failed miserably. Any help you could give (links to some docs, or other answers, or simply suggestions) is greatly appreciated!

like image 393
IntrepidDude Avatar asked Nov 12 '10 02:11

IntrepidDude


2 Answers

Please use the following code:

Type type = typeof(YourClassName);
int NumberOfRecords = type.GetProperties().Length;
like image 147
gideonlouw Avatar answered Oct 25 '22 08:10

gideonlouw


This is untested and just off the top of my head

System.Reflection.MemberInfo info = typeof(StaffRosterEntry);
object[] attributes = info.GetCustomAttributes(true);
var attributeCount = attributes.Count(); 
like image 39
Saif Khan Avatar answered Oct 25 '22 07:10

Saif Khan