0

I have a lot of class

example

  public class AccountItem
{
    public Guid p_ID { get; set; }
    public Guid LoginID { get; set; }
    public Guid DId { get; set; }
    public string UserName { get; set; }
    public string Password { get; set; }
    public string OldPassword { get; set; }
    public DateTime PassChangeDate { get; set; }
}

    public class RankItem
{
    public Guid ModID { get; set; }
    public string Code { get; set; }
    public string RankName { get; set; }
    public int? Priority { get; set; }
}

and more...

how do I add record class add dynamically field or class?

example

I use this structure

 public class RecordData
{
    public Guid className { get; set; } 
    public DataFields dataFields { get; set; } 
}



   public class DataFields
{
    public List<AccountItem> Items { get; set; }

    public DataFields()
    {
        Items = new List<AccountItem>();
    }  
}   

or

 public class DataFields
{
    public List<RankItem> Items { get; set; }

    public DataFields()
    {
        Items = new List<RankItem>();
    }  
}  

how do I add record class add dynamically runtime field or class?

public class DataFields
{
    public List<????> Items { get; set; }

    public DataFields()
    {
        Items = new List<????>();  //I want to add dynamic list field
    }  
}  


public class RankItem
{
    public Guid ModID { get; set; }
    public string Code { get; set; }
    public string RankName { get; set; }
    public int? Priority { get; set; }

    publist string or type  ????  {get;set;}  // I want to add dynamic field
}

thank you

Christoph Fink
  • 22,727
  • 9
  • 68
  • 113

2 Answers2

0

Something in line with (might have some syntax error, but this is the idea)

public class DataFields<T>
{
    public List<T> Items { get; set; }

    public DataFields()
    {
        Items = new List<T>(); 
    }  
}  

and use it like:

public class RankItem
{
    public Guid ModID { get; set; }
    public string Code { get; set; }
    public string RankName { get; set; }
    public int? Priority { get; set; }

    public DataFields<string> StringDataFields {get;set;}  // I want to add dynamic field
    public  DataFields<AccountItem> AccountItemDataFields {get;set;}  // I want to add dynamic field
    //public DataFields<int> AnotherSampleDataList {get;set;}  // I want to add dynamic field
}
Yahya
  • 3,386
  • 3
  • 22
  • 40
  • ok thank you but How do I change the type of class at runtime? public class DataFields { public List Items { get; set; } public DataFields() { Items = new List(); } } – user3575477 May 13 '14 at 14:27
  • @user3575477 Why you want to define type at runtime? `DataFields` will work as a template, and for whichever type (string, int, AccountItem, etc) you want to use it as, just define (at design time). As I have shown in the example of RankItem class. – Yahya May 13 '14 at 14:29
  • @user3575477 The idea I gave is based on http://stackoverflow.com/questions/4560890/what-are-generics-in-c – Yahya May 13 '14 at 14:32
0
    public class RecordData
{
    public Guid className { get; set; }
    public DataFields<AccountItem> dataFields { get; set; }  //or  public DataFields<RankItem> dataFields { get; set; }
}



public class DataFields<T>
{
    public List<T> Items { get; set; }

    public DataFields()
    {
        Items = new List<T>();
    }
}   
TheAX
  • 11
  • 1