Solved

Indexed properties on custom class

Posted on 2008-11-03
2
412 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

Master Your Team's Linux and Cloud Stack!

The average business loses $13.5M per year to ineffective training (per 1,000 employees). Keep ahead of the competition and combine in-person quality with online cost and flexibility by training with Linux Academy.

Question has a verified solution.

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

Today I had a very interesting conundrum that had to get solved quickly. Needless to say, it wasn't resolved quickly because when we needed it we were very rushed, but as soon as the conference call was over and I took a step back I saw the correct …
This article shows how to deploy dynamic backgrounds to computers depending on the aspect ratio of display
This video shows how to use Hyena, from SystemTools Software, to bulk import 100 user accounts from an external text file. View in 1080p for best video quality.

832 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