public void Bind <TDataModel>(CreateBindingPageDelegate pageCreator, CreateBindingControlDelegate ctrlCreator, CreateDynamicControlsDelegate dynCtrlDescCreator, IContextProvider contextProvider, out IEnumerable <IBinding> bindings, out IRawDependencyGroup dependencies, out IMetadata[] metadata) { var type = typeof(TDataModel); var bindingsList = new List <IBinding>(); bindings = bindingsList; var pageAttSet = GetAttributeSet(type, -1); OnGetPageAttributeSet(type, ref pageAttSet); var page = pageCreator.Invoke(pageAttSet); var firstCtrlId = 0; dependencies = new RawDependencyGroup(); var metadataMap = new Dictionary <object, PropertyInfoMetadata>(); CollectMetadata(type, metadataMap, new PropertyInfo[0], new List <Type>(), contextProvider); TraverseType <TDataModel>(type, new List <IControlDescriptor>(), ctrlCreator, dynCtrlDescCreator, page, metadataMap, bindingsList, dependencies, contextProvider, ref firstCtrlId); metadata = metadataMap.Values.ToArray(); OnBeforeControlsDataLoad(bindings); }
public void Bind <TDataModel>(TDataModel model, CreateBindingPageDelegate pageCreator, CreateBindingControlDelegate ctrlCreator, out IEnumerable <IBinding> bindings, out IRawDependencyGroup dependencies) { var type = model.GetType(); var bindingsList = new List <IBinding>(); bindings = bindingsList; var pageAttSet = GetAttributeSet(type, -1); OnGetPageAttributeSet(type, ref pageAttSet); var page = pageCreator.Invoke(pageAttSet); var firstCtrlId = 0; dependencies = new RawDependencyGroup(); TraverseType(model.GetType(), model, new List <PropertyInfo>(), ctrlCreator, page, bindingsList, dependencies, ref firstCtrlId); OnBeforeControlsDataLoad(bindings); LoadControlsData(bindings); }