Exemplo n.º 1
0
 /// <summary>
 /// Libera a instancia.
 /// </summary>
 /// <param name="disposing"></param>
 protected override void Dispose(bool disposing)
 {
     base.Dispose(disposing);
     _linkInfo = null;
     _child    = null;
     _childFromModelCreator = null;
     _ignoreChildItems.Clear();
 }
Exemplo n.º 2
0
 /// <summary>
 /// Inicializa a instancia.
 /// </summary>
 /// <param name="child">Instancia do filho associado.</param>
 /// <param name="linkInfo">Informações do link.</param>
 /// <param name="childFromModelCreator"></param>
 /// <param name="sourceContext">Contexto de origem de consultas.</param>
 private void Initialize(IEntityList child, EntityLoaderLinkInfo linkInfo, EntityFromModelCreatorHandler childFromModelCreator, Colosoft.Query.ISourceContext sourceContext)
 {
     child.Require("child").NotNull();
     linkInfo.Require("linkInfo").NotNull();
     _child    = child;
     _linkInfo = linkInfo;
     _childFromModelCreator = childFromModelCreator;
     ((IConnectedEntity)this).Connect(sourceContext);
     if (_hasUid == null)
     {
         _hasUid = TypeManager.HasUid(typeof(TEntity));
     }
     if (child is Collections.INotifyCollectionChangedDispatcher)
     {
         ((Collections.INotifyCollectionChangedDispatcher)child).AddCollectionChanged(ChildCollectionChanged, Collections.NotifyCollectionChangedDispatcherPriority.High);
     }
     else
     {
         child.CollectionChanged += ChildCollectionChanged;
     }
 }
Exemplo n.º 3
0
 /// <summary>
 /// Construtor padrão.
 /// </summary>
 /// <param name="enumerable">Instancia do Enumerable que será adaptada.</param>
 /// <param name="linkInfo"></param>
 public EntityLinkEnumerable(IEnumerable <IEntity> enumerable, EntityLoaderLinkInfo linkInfo) : base(enumerable, null, null)
 {
     _linkInfo = linkInfo;
 }
Exemplo n.º 4
0
 /// <summary>
 /// Cria uma instancia já definindos os itens iniciais.
 /// </summary>
 /// <param name="items">Itens que serão usados na inicialização.</param>
 /// <param name="linkInfo">Informações do link.</param>
 /// <param name="childFromModelCreator"></param>
 /// <param name="child">Instancia do filho associado com o link.</param>
 /// <param name="uiContext"></param>
 /// <param name="parentUidSetter"></param>
 /// <param name="sourceContext">Contexto de origem de consultas.</param>
 /// <param name="entityTypeManager"></param>
 public EntityLinksList(IEnumerable <TEntity> items, EntityLoaderLinkInfo linkInfo, EntityFromModelCreatorHandler childFromModelCreator, IEntityList child, string uiContext, Action <TEntity> parentUidSetter, Colosoft.Query.ISourceContext sourceContext = null, IEntityTypeManager entityTypeManager = null) : base(items, uiContext, parentUidSetter, entityTypeManager)
 {
     Initialize(child, linkInfo, childFromModelCreator, sourceContext);
 }
Exemplo n.º 5
0
 /// <summary>
 /// Cria um nova instancia da lista.
 /// Esse método é usado por reflexão.
 /// </summary>
 /// <param name="items"></param>
 /// <param name="child">Instancia do filho associado com o link.</param>
 /// <param name="linkInfo"></param>
 /// <param name="childFromModelCreator"></param>
 /// <param name="uiContext"></param>
 /// <param name="parentUidSetter"></param>
 /// <param name="sourceContext"></param>
 /// <param name="entityTypeManager"></param>
 /// <returns></returns>
 internal static EntityLinksList <TEntity> CreateLazyInstance(Lazy <IEnumerable <IEntity> > items, EntityLoaderLinkInfo linkInfo, EntityFromModelCreatorHandler childFromModelCreator, IEntityList child, string uiContext, Action <IEntity> parentUidSetter, Colosoft.Query.ISourceContext sourceContext, IEntityTypeManager entityTypeManager)
 {
     return(new EntityLinksList <TEntity>(new Lazy <IEnumerable <TEntity> >(() => new Collections.NotifyCollectionChangedObserverRegisterEnumerable <TEntity>(items.Value)), linkInfo, childFromModelCreator, child, uiContext, new Action <TEntity>(e => parentUidSetter(e)), sourceContext, entityTypeManager)
     {
         _isLazy = true
     });
 }