Exemplo n.º 1
0
            public static void InitializeWeakRef(PythonContext context, object self, object target, object callback)
            {
                IWeakReferenceable iwr = ConvertToWeakReferenceable(context, target);

                WeakRefTracker wrt = iwr.GetWeakRef();

                if (wrt == null)
                {
                    if (!iwr.SetWeakRef(new WeakRefTracker(callback, self)))
                    {
                        throw PythonOps.TypeError("cannot create weak reference to '{0}' object", PythonOps.GetPythonTypeName(target));
                    }
                }
                else
                {
                    wrt.ChainCallback(callback, self);
                }
            }
Exemplo n.º 2
0
            public static void InitializeWeakRef(object self, object target, object callback)
            {
                IWeakReferenceable iwr = target as IWeakReferenceable;

                if (iwr == null)
                {
                    throw Ops.TypeError("cannot create weak reference to '{0}' object", Ops.GetDynamicType(target).__name__);
                }

                WeakRefTracker wrt = iwr.GetWeakRef();

                if (wrt == null)
                {
                    iwr.SetWeakRef(new WeakRefTracker(callback, self));
                }
                else
                {
                    wrt.ChainCallback(callback, self);
                }
            }