I'm pretty new to C# and it may well be that my approach is completely inadequate... I'm trying to build a class which is a container for another type which may be extended in a derived class. Basically, my current code looks something like this:
public class BaseFormFields
{
public String baseFieldName1 {get; set;}
}
public abstract class BaseOrder<F> where F : BaseFormFields
{
public String orderProperty1 {get; set;}
public F formFields { get; set; }
}
in a derived class
public class SpecificFormFields : BaseFormFields
{
public String specificFieldNam1 {get; set;}
}
public class SpecificOrder : BaseOrder<SpecificFormFields>
{
}
while this basically works, how would I need to construct a method in either class BaseFormFields or SpecificFormFields to access members from BaseOrder? I tried:
public class BaseFormFields
{
public string BaseFieldName1 { get; set; }
public Object _order;
public BaseOrder<BaseFormFields> order
{
get
{
return (BaseOrder<BaseFormFields>)_order;
}
}
}
public abstract class BaseOrder<F> where F : BaseFormFields
{
public String orderProperty1 { get; set; }
private F _formFields;
public F formFields
{
get
{
return _formFields;
}
set
{
value._order = this;
_formFields = value;
}
}
}
public class SpecificFormFields : BaseFormFields
{
public String SpecificFieldName1 { get; set; }
public String SpecificFieldName2
{
get
{
return order.orderProperty1;
}
}
}
public class SpecificOrder : BaseOrder<SpecificFormFields>
{
}
which compiles alright but gives me an InvalidCastException when I try to:
SpecificOrder specificOrder = new SpecificOrder();
specificOrder.orderProperty1 = "Test";
specificOrder.formFields = new SpecificFormFields();
String s = specificOrder.formFields.SpecificFieldName2;
Any help is appreciated...