【问题标题】:How to get handle on wrapped class如何处理包装类
【发布时间】:2014-09-28 21:38:34
【问题描述】:

如果我有一个包装另一个类,即:

public class NoWrap
{
  internal sealed class Wrapped
  { //Constructor here
  }
}

如何从NoWrap 类内部获取Wrapped 类实例的句柄?

【问题讨论】:

    标签: c# class wrapper unmanaged


    【解决方案1】:

    Wrapped 类的实例只有在您显式创建时才会出现。在创建NoWrap 时,它不会自动开始存在。例如:

    public class NoWrap
    {
        internal sealed class Wrapped
        {
        }
    
        public void Wrap()
        {
            this.wrapped = new Wrapped();
        }
    
        internal Wrapped GetWrapped()     //note: cannot be public
        {
            return wrapped;
        }
    
        private Wrapped wrapped;
    }
    
    //...
    
    NoWrap nw = new NoWrap();  // (*)
    
    nw.Wrap();                 // (**)
    

    在标有 (*) 的点存在一个 NoWrap 实例,并且没有 Wrapped 实例。只有在 (**) 中调用了 Wrap 之后,才会创建 Wrapped 的实例,并且您是否引用它的事实完全取决于您 - 即您必须将其分配给某个变量/字段/属性。

    要在NoWrap 类之外使用它:

    NoWrap.Wrapped x = nw.GetWrapped();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-05-17
      • 1970-01-01
      • 2019-12-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-08
      • 1970-01-01
      相关资源
      最近更新 更多