public static PropertyReferenceCollection GetReturnProperties(this SmartObject smartObject) { if (smartObject == null) { throw new ArgumentNullException("smartObject"); } var method = smartObject.GetExecutingMethod(); if (method == null) { throw new NullReferenceException("method"); } var propertyReferenceCollectionType = typeof(PropertyReferenceCollection); var ctor = propertyReferenceCollectionType.GetConstructors(System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic).First(); var propertyCollection = (PropertyReferenceCollection)ctor.Invoke(new object[] { }); var addMethod = propertyReferenceCollectionType.GetMethod("Add", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic); foreach (SmartProperty returnProperty in method.ReturnProperties) { var property = smartObject.Properties[returnProperty.Name]; addMethod.Invoke(propertyCollection, new object[] { property }); } return(propertyCollection); }
public static void SetFilter(this SmartObject smartObject, LogicalFilter filter) { var listMethod = smartObject.GetExecutingMethod() as SmartListMethod; listMethod.Filter = filter; }