public object Calculate(ModelNode node, string propertyName) { if (node is IModelNodeEnabled) { var modelNode = ParentCalculator.GetParent(node); if (modelNode != null) { var calculate = modelNode.GetValue(propertyName); if (calculate != null && calculate.GetType().IsEnum) { var propertyType = node.GetValueInfo(propertyName).PropertyType; if (IsNullableType(propertyType)) { var genericArgument = propertyType.GetGenericArguments()[0]; if (genericArgument != calculate.GetType()) { return(Enum.Parse(genericArgument, ((int)calculate).ToString(CultureInfo.InvariantCulture))); } } } return(calculate); } } throw new NotImplementedException(propertyName); }
public bool IsReadOnly(IModelNode node, string propertyName) { var parent = ParentCalculator.GetParent(node); var helper = new FastModelEditorHelper(); return(helper.IsPropertyModelBrowsableVisible(parent, propertyName)); }