Solved

Indexed properties on custom class

Posted on 2008-11-03
2
413 Views
Last Modified: 2013-12-17
I have a custom class (ControlPropertiesBase) whith the following fields (see code).
Several other classes (derived from WebControls) have the property ControlProperties, which is derived from the ControlPropertiesBase, plus other properties / fields.

Is it possible to access the properties via indexing like myControl.Properties["TabOrder"], and if so how can I do that?
[Serializable]
public class ControlPropertiesBase
{
	public string Name;
	public string Label;
	public string LabelTranslated;
	public int TabOrder;
	public bool Compulsary;
	public bool ReadOnly;
	public bool Visible;
}
 
public class DropDownListControl : DropDownList
{
	[Serializable]
	public class ControlProperties : ControlPropertiesBase
	{
		public ControlProperties() { }
		public Hashtable Items;
	}
 
	private ControlProperties _properties = new ControlProperties();
	public ControlProperties Properties
	{
		get { return _properties; }
		set { _properties = value; }
	}
 
	protected override void OnInit(EventArgs e)
	{
		base.OnInit(e);
		this._properties = new ControlProperties();
	}
}

Open in new window

0
Comment
Question by:Albert Van Halen
  • 2
2 Comments
 
LVL 1

Expert Comment

by:Nullable
ID: 22871528
u can use this code :)



this._properties = new ControlProperties();
 
_properties.Label = "Nullable";
 
string labelvalue = _properties.GetType().GetField("Label").GetValue(_properties).ToString();

Open in new window

0
 
LVL 1

Accepted Solution

by:
Nullable earned 500 total points
ID: 22871633
u Can use this code

i test it and it will be work



public class ControlProperties : ControlPropertiesBase
        {
            public ControlProperties() { }
            public Hashtable Items;
            public object this[string index]
            {
                get
                {
                    return this.GetType().GetField(index).GetValue(this).ToString();
                }
                set
                {
                    this.GetType().GetField(index).SetValue(this, value);
                }
            }
        }
 
// Use code :
 
string labelvalue = _properties["Label"] as string;

Open in new window

0

Featured Post

How Do You Stack Up Against Your Peers?

With today’s modern enterprise so dependent on digital infrastructures, the impact of major incidents has increased dramatically. Grab the report now to gain insight into how your organization ranks against your peers and learn best-in-class strategies to resolve incidents.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Performance in games development is paramount: every microsecond counts to be able to do everything in less than 33ms (aiming at 16ms). C# foreach statement is one of the worst performance killers, and here I explain why.
The article shows the basic steps of integrating an HTML theme template into an ASP.NET MVC project
Microsoft Active Directory, the widely used IT infrastructure, is known for its high risk of credential theft. The best way to test your Active Directory’s vulnerabilities to pass-the-ticket, pass-the-hash, privilege escalation, and malware attacks …
A short tutorial showing how to set up an email signature in Outlook on the Web (previously known as OWA). For free email signatures designs, visit https://www.mail-signatures.com/articles/signature-templates/?sts=6651 If you want to manage em…

839 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question