示例#1
0
            protected override void InternalClonemembers(FileSystemItem src)
            {
                base.InternalClonemembers(src);
                FsContainer s = (FsContainer)src;

                _itemsById   = new Dictionary <Int64, FileSystemItem>();
                _itemsByName = new Dictionary <String, FileSystemItem>();

                foreach (KeyValuePair <Int64, FileSystemItem> kv in s._itemsById)
                {
                    FileSystemItem srcItem = kv.Value;
                    if (srcItem is FsLink)
                    {
                        FsLink lnk    = (FsLink)srcItem;
                        FsLink lnkNew = (FsLink)srcItem.Clone();
                        AddItem(lnkNew, false);
                        if (FileSystemItem.BelongsTo(src.Owner._currentMovingRoot, lnk.ItemTo, true))
                        {
                            src.Owner._linksToFlip.Add(lnkNew);
                        }
                    }
                    else
                    {
                        AddItem(srcItem.Clone(), false);
                    }
                }
            }
示例#2
0
            protected override void InternalClonemembers(FileSystemItem src)
            {
                base.InternalClonemembers(src);
                FsLink s = (FsLink)src;

                if (_itemTo != null)
                {
                    _itemTo.RegisterLink(this);
                }
            }
示例#3
0
            public FsLink AddLink(FileSystemItem itemLinkTo, Boolean isDynamic)
            {
                if (itemLinkTo is FsLink)
                {
                    throw new ApplicationException("Creating link to link is prohibited.");
                }
                FsLink res = isDynamic ? (FsLink) new FsDynamicLink(itemLinkTo):(FsLink) new FsHardLink(itemLinkTo);

                itemLinkTo.RegisterLink(res);
                AddItem(res, true);
                return(res);
            }
示例#4
0
 public FileSystemItem GetTargetItemOfLink(FsLink lnk)
 {
     return(_allNodes[lnk.ItemTo.ID]);
 }
示例#5
0
 public void UnregisterLink(FsLink lnk)
 {
     _links.Remove(lnk);
 }
示例#6
0
 public void RegisterLink(FsLink lnk)
 {
     _links.Add(lnk);
 }