示例#1
0
        public void ShouldThrowInvalidOperationExceptionWhenDefaultExtensionCannotBeFound()
        {
            // Arrange
            var extensions = new Dictionary <string, Func <ServiceFactory, IExtensionBase> >();
            var extender   = new ExtenderProxy <string>(proxy => new Extender <string>(new ExtenderCore <string>(extensions), proxy, _ => null));
            var component  = new TestItem("TEST-ITEM");

            // Act
            var exception = Assert
                            .Throws <InvalidOperationException>(() => extender
                                                                .Extend(component));

            // Assert
            Assert.Equal("Default extension could not by found.", exception.Message);
        }
示例#2
0
        public void ShouldUseDefaultExtensionWhenConcreteExtensionIsNull()
        {
            // Arrange
            var defaultExtension = Mock.Of <IExtension <string, object> >(MockBehavior.Strict);
            var extensions       = new Dictionary <string, Func <ServiceFactory, IExtensionBase> >(new Dictionary <string, Func <ServiceFactory, IExtensionBase> >
            {
                [typeof(TestItem).FullName] = _ => null,
                [typeof(object).FullName]   = _ => defaultExtension
            });

            var extender  = new ExtenderProxy <string>(proxy => new Extender <string>(new ExtenderCore <string>(extensions), proxy, _ => null));
            var component = new TestItem("TEST-ITEM");

            Mock.Get(defaultExtension)
            .Setup(d => d.Extend(component, extender));

            // Act & Assert
            extender.Extend(component);
        }
示例#3
0
            internal Oleaut32.IExtender GetProxyForControl(Control ctl)
            {
                Oleaut32.IExtender rval = null;
                if (proxyCache is null)
                {
                    proxyCache = new Hashtable();
                }
                else
                {
                    rval = (Oleaut32.IExtender)proxyCache[ctl];
                }

                if (rval is null)
                {
                    if (ctl != parent && !GetControlBelongs(ctl))
                    {
                        Debug.WriteLineIf(AxHTraceSwitch.TraceVerbose, "!parent || !belongs NYI");
                        AxContainer c = FindContainerForControl(ctl);
                        if (c is not null)
                        {
                            rval = new ExtenderProxy(ctl, c);
                        }
                        else
                        {
                            Debug.WriteLineIf(AxHTraceSwitch.TraceVerbose, "unable to find proxy, returning null");
                            return(null);
                        }
                    }
                    else
                    {
                        rval = new ExtenderProxy(ctl, this);
                    }

                    proxyCache.Add(ctl, rval);
                }

                Debug.WriteLineIf(AxHTraceSwitch.TraceVerbose, "found proxy " + rval.ToString());
                return(rval);
            }
示例#4
0
            internal Oleaut32.IExtender GetProxyForControl(Control ctl)
            {
                Oleaut32.IExtender rval = null;
                if (_proxyCache is null)
                {
                    _proxyCache = new();
                }
                else
                {
                    _proxyCache.TryGetValue(ctl, out rval);
                }

                if (rval is null)
                {
                    if (ctl != _parent && !GetControlBelongs(ctl))
                    {
                        Debug.WriteLineIf(s_axHTraceSwitch.TraceVerbose, "!parent || !belongs NYI");
                        AxContainer c = FindContainerForControl(ctl);
                        if (c is not null)
                        {
                            rval = new ExtenderProxy(ctl, c);
                        }
                        else
                        {
                            Debug.WriteLineIf(s_axHTraceSwitch.TraceVerbose, "unable to find proxy, returning null");
                            return(null);
                        }
                    }
                    else
                    {
                        rval = new ExtenderProxy(ctl, this);
                    }

                    _proxyCache.Add(ctl, rval);
                }

                Debug.WriteLineIf(s_axHTraceSwitch.TraceVerbose, $"found proxy {rval}");
                return(rval);
            }
 internal System.Windows.Forms.UnsafeNativeMethods.IExtender GetProxyForControl(Control ctl)
 {
     System.Windows.Forms.UnsafeNativeMethods.IExtender extender = null;
     if (this.proxyCache == null)
     {
         this.proxyCache = new Hashtable();
     }
     else
     {
         extender = (System.Windows.Forms.UnsafeNativeMethods.IExtender) this.proxyCache[ctl];
     }
     if (extender == null)
     {
         if ((ctl != this.parent) && !this.GetControlBelongs(ctl))
         {
             AxHost.AxContainer container = FindContainerForControl(ctl);
             if (container == null)
             {
                 return null;
             }
             extender = new ExtenderProxy(ctl, container);
         }
         else
         {
             extender = new ExtenderProxy(ctl, this);
         }
         this.proxyCache.Add(ctl, extender);
     }
     return extender;
 }
示例#6
0
文件: AxHost.cs 项目: JianwenSun/cc
 /// <devdoc>
 ///    <para>[To be supplied.]</para>
 /// </devdoc>
 internal UnsafeNativeMethods.IExtender GetProxyForControl(Control ctl) {
     UnsafeNativeMethods.IExtender rval = null;
     if (proxyCache == null) {
         proxyCache = new Hashtable();
     }
     else {
         rval = (UnsafeNativeMethods.IExtender) proxyCache[ctl];
     }
     if (rval == null) {
         if (ctl != parent && !GetControlBelongs(ctl)) {
             Debug.WriteLineIf(AxHTraceSwitch.TraceVerbose, "!parent || !belongs NYI");
             AxContainer c = FindContainerForControl(ctl);
             if (c != null) {
                 rval = new ExtenderProxy(ctl, c);
             }
             else {
                 Debug.WriteLineIf(AxHTraceSwitch.TraceVerbose, "unable to find proxy, returning null");
                 return null;
             }
         }
         else {
             rval = new ExtenderProxy(ctl, this);
         }
         proxyCache.Add(ctl, rval);
     }
     Debug.WriteLineIf(AxHTraceSwitch.TraceVerbose, "found proxy "+rval.ToString());
     return rval;
 }