Esempio n. 1
0
 public override Element this[int index]
 {
     get
     {
         RWLock.EnterUpgradeableReadLock();
         try
         {
             var elem = Inner[index];
             if (elem != null && elem.Stub && elem.Owner != null)
             {
                 RWLock.EnterWriteLock();
                 try
                 {
                     elem = Inner[index] = elem.Owner.OnStubRequest(elem.ID);
                 }
                 catch (Exception err)
                 {
                     throw new DestubException(this, index, err);
                 }
                 finally
                 {
                     RWLock.ExitWriteLock();
                 }
             }
             return(elem);
         }
         finally
         {
             RWLock.ExitUpgradeableReadLock();
         }
     }
     set
     {
         base[index] = value;
     }
 }