コード例 #1
0
 /// <summary>
 /// ComWrapper クラスが管理しているラッパークラスのコレクションからラッパークラスを取り出します。
 /// コレクションに無い場合は、CreateComWrapper メソッドを呼び出し、インスタンスを作成します。
 /// </summary>
 /// <param name="comObject">ラップする COM オブジェクト。</param>
 /// <returns>comObject に対応したラッパークラスのインスタンス。</returns>
 protected ComWrapper GetComWrapper(object comObject)
 {
     using (SafeComObject key = new SafeComObject(comObject)) {
         if (Wrappers.TryGetValue(key, out ComWrapper comWrapper))
         {
             if (!comWrapper.IsDisposed)
             {
                 return(comWrapper);
             }
             else
             {
                 Wrappers.Remove(comWrapper);
             }
         }
         ComWrapper wrapper = CreateComWrapper(key.Target, key.TypeName);
         wrapper.Root   = Root;
         key.OwnsHandle = false; // comObject を解放しない
         return(wrapper);
     }
 }