I have Parent Model class and viewModel class. Parent Model class has GetViewModel() class and I am trying to inherit Parent class and override the GetViewModel().However, it throws an infinite exception.
Parent ViewModel Class:
public class ParentViewModel
{ public IEnumerable Choices { get; set; }
public object Value { get; set; }
public IMetaField MetaField { get; set; }
public bool IsRequired { get; set; }
public bool HasOtherChoice { get; set; }
public string ValidationAttributes { get; set; }
public string RequiredViolationMessage { get; set; }
public string CssClass { get; set; }
}
Parent Model Class:
public class ChildModel : ParentModel
{ public string CorticonEntityName { get; set; }
public string CorticonFieldName { get; set; }
public override object GetViewModel(object value, IMetaField metaField)
{
this.Value = value;
retu (object)new ChildViewModel()
{
Choices = this.DeserializeChoices(),
Value = value,
MetaField = this.MetaField,
HasOtherChoice = this.HasOtherChoice,
IsRequired = (this.ValidatorDefinition.Required.HasValue && this.ValidatorDefinition.Required.Value),
ValidationAttributes = this.BuildValidationAttributesString(),
RequiredViolationMessage = this.ValidatorDefinition.RequiredViolationMessage,
CssClass = this.CssClass
};
}
}
I have created two child classes ChildModel class and ChildViewModel classs which are inheriting parent lasses.
I want to override the GetViewModel() of parent class so I have done as below and working perfectly.
ChildViewModel class:
public class ChildViewModel:ParentViewModel
{
public string CorticonEntityName { get; set; }
public string CorticonFieldName { get; set; }
}
ChildModel Class:
public class ChildModel : ParentModel
{ public string CorticonEntityName { get; set; }
public string CorticonFieldName { get; set; }
public override object GetViewModel(object value, IMetaField metaField)
{
this.Value = value;
retu (object)new ChildViewModel()
{
Choices = this.DeserializeChoices(),
Value = value,
MetaField = this.MetaField,
HasOtherChoice = this.HasOtherChoice,
IsRequired = (this.ValidatorDefinition.Required.HasValue && this.ValidatorDefinition.Required.Value),
ValidationAttributes = this.BuildValidationAttributesString(),
RequiredViolationMessage = this.ValidatorDefinition.RequiredViolationMessage,
CssClass = this.CssClass,
CorticonEntityName=this.CorticonEntityName,
CorticonFieldName=this.CorticonFieldName
};
}
}
But I don’t’ want set all the properties in child class GetViewModel() again as the parent GetViewModel() is doing. I wanted to reuse the Parent class method and set new properties in Child class so I tried as below but it is throwing infinite loop.
ChildViewModel class:
public class ChildViewModel:ParentViewModel
{
public string CorticonEntityName { get; set; }
public string CorticonFieldName { get; set; }
CheckboxesFieldViewModel baseObject { get; set; }
}
ChildModel Class:
public class ChildModel : ParentModel
{ public string CorticonEntityName { get; set; }
public string CorticonFieldName { get; set; }
CheckboxesFieldViewModel baseObject { get; set; }
public override object GetViewModel(object value, IMetaField metaField)
{
object objBase=this.GetViewModel(value,metaField);
retu (object)new ChildViewModel ()
{
objParent=objBase,
CorticonEntityName = this.CorticonEntityName,
CorticonFieldName = this.CorticonFieldName
};
}}
How can reuse the Parent class GetViewModel() without setting the properties again.
