I think Viv's idea of a dictionary is a good one, but I'd go one step further and use an enum rather than a string.
public class LooseProperties
{
public Dictionary<LPEnum, object> Properties { get; set; }
public LooseProperties() { Properties = new Dictionary<LPEnum, object>(); }
}
public enum LPEnum
{
PremiumReminderDays,
CompanyName,
LapseDays
}
then:
LooseProperties lp = new LooseProperties();
lp.Properties.Add(LPEnum.PremiumReminderDays, 1);
lp.Properties.Add(LPEnum.CompanyName,"Samaan Systems Ltd");
string company = (string) lp.Properties[LPEnum.CompanyName];
That at least makes it a little less likely to cause a runtime exception because of typos, although if you cast the object incorrectly it will still crash.
~~Bonnie
>>>Hi,
>>>
>>>I have an EntityList with the following "fields" App_item, App_Type and App_Value.
>>>
>>>It contains things like:
>>>
>>>"PremiumReminderDays", "I", "10"
>>>"LapseDays", "I", "5"
>>>"CompanyName", "C", "Samaan Systems Ltd."
>>>
>>>I have an AppInfo object that I want to add properties to from this list so I end up with properties like this:
>>>
>>>AppInfo.PremiumReminderDays = 10
>>>AppInfo.LapseDays = 10
>>>AppInfo.CompanyName = "Samaan Systems Ltd."
>>>
>>>How do I do this in C#?
>>
>>A couple of ideas:
>>(a) See the DynamicObject class (actually I think you need .net 4 for that)
>>(b) Use an embedded dictionary. Something like:
public class LooseProperties
>> {
>> public Dictionary<string, object> Properties { get; set; }
>> public LooseProperties() { Properties = new Dictionary<string, object>(); }
>> // Add other standard properties
>> }
then:
LooseProperties lp = new LooseProperties();
>>//To store:
>>lp.Properties.Add("PremiumReminderDays", 1);
>>lp.Properties.Add("CompanyName","Samaan Systems Ltd");
>>//To retrieve:
>>string company = (string) lp.Properties["CompanyName"];
But, TBH, it introduces a lot of opportunities to cause exceptions at run time and, at least to me, smacks of bad design.....
>
>
>Thanks Viv,
>
>I'm open to any advice on a better design. I don't understand why you think it introduces potential problems though, so could you explain that, please? The possible properties will all be defined by me so I will know what is there and what I can use, I've just got into the habit of doing things like this in VFP so that I just need to add any new property to the table and it is magically available for me in the code. I suppose I could just make the properties defined ones on an object and just populate them from thetable when I need to. Is that a better design?