private static void CriteriaOperator_UserValueToString(Object sender, UserValueProcessingEventArgs e) { if (!e.Handled && (e.Value != null)) { ITypeInfo typeInfo = typesInfo.FindTypeInfo(e.Value.GetType()); if ((typeInfo != null) && typeInfo.IsPersistent) { IObjectSpace objectSpace = null; if (e.Value is IObjectSpaceLink) { objectSpace = ((IObjectSpaceLink)e.Value).ObjectSpace; } if (objectSpace == null) { objectSpace = ParseCriteriaScope.currentObjectSpace; } if (objectSpace != null) { e.Data = objectSpace.GetObjectHandle(e.Value); e.Tag = objectTag; e.Handled = true; } else { e.Data = ObjectHandleHelper.CreateObjectHandle(typesInfo, typeInfo.Type, NHObjectSpace.GetKeyValueAsString(typesInfo, e.Value)); e.Tag = objectTag; e.Handled = true; } } } }
static void CriteriaOperator_UserValueToString(object sender, UserValueProcessingEventArgs e) { if (e.Value is XPObject) { e.Tag = "MyModel"; e.Data = String.Format("{0}/{1}", e.Value.GetType().Name, (e.Value as XPObject).Oid); e.Handled = true; } }
static void CriteriaOperator_UserValueParse(object sender, UserValueProcessingEventArgs e) { if (currectSession != null && e.Tag == "MyModel") { string[] input = e.Data.Split('/'); Type referencedType = Type.GetType(String.Format("CriteriaOperatorExample.{0}", input[0])); e.Value = currectSession.FindObject(referencedType, new BinaryOperator("Oid", Convert.ToInt32(input[1]))); e.Handled = true; } }
private static void CriteriaOperator_UserValueParse(Object sender, UserValueProcessingEventArgs e) { if (!e.Handled && !String.IsNullOrWhiteSpace(e.Data) && (e.Tag == objectTag) && (ParseCriteriaScope.currentObjectSpace != null)) { try { e.Value = ParseCriteriaScope.currentObjectSpace.GetObjectByHandle(e.Data); e.Handled = true; } catch { e.Value = e.Data; } } }