Inheritance: AbstractHandler
        public virtual IHandler Create(ComponentModel model)
        {
            IHandler handler = new DefaultHandler(model);

            handler.Init(kernel);             //组件初始化
            return(handler);
        }
コード例 #2
0
		public void Usage()
		{
			BinaryTreeComponentName tree = new BinaryTreeComponentName();

			DefaultHandler handler1 = new DefaultHandler(
				new ComponentModel("A", typeof(DefaultHandler), typeof(DefaultHandler)));
			DefaultHandler handler2 = new DefaultHandler(
				new ComponentModel("B", typeof(DefaultHandler), typeof(DefaultHandler)));
			DefaultHandler handler3 = new DefaultHandler(
				new ComponentModel("C", typeof(DefaultHandler), typeof(DefaultHandler)));
			DefaultHandler handler4 = new DefaultHandler(
				new ComponentModel("D", typeof(DefaultHandler), typeof(DefaultHandler)));
			DefaultHandler handler5 = new DefaultHandler(
				new ComponentModel("E", typeof(DefaultHandler), typeof(DefaultHandler)));
			DefaultHandler handler6 = new DefaultHandler(
				new ComponentModel("F", typeof(DefaultHandler), typeof(DefaultHandler)));

			tree.Add(new ComponentName("protocolhandler"), handler1);
			tree.Add(new ComponentName("protocolhandler:key=1"), handler2);
			tree.Add(new ComponentName("protocolhandler:key=2"), handler3);
			tree.Add(new ComponentName("protocolhandler:key=2,secure=true"), handler4);
			tree.Add(new ComponentName("modelmanager"), handler5);
			tree.Add(new ComponentName("viewmanager"), handler6);

			Assert.AreSame(handler1, tree.GetHandler(new ComponentName("protocolhandler")));
			Assert.AreSame(handler2, tree.GetHandler(new ComponentName("protocolhandler:key=1")));
			Assert.AreSame(handler3, tree.GetHandler(new ComponentName("protocolhandler:key=2")));
			Assert.AreSame(handler4, tree.GetHandler(new ComponentName("protocolhandler:key=2,secure=true")));
			Assert.AreSame(handler5, tree.GetHandler(new ComponentName("modelmanager")));
			Assert.AreSame(handler6, tree.GetHandler(new ComponentName("viewmanager")));

			IHandler[] handlers = tree.GetHandlers(new ComponentName("protocolhandler"));

			Assert.AreEqual(4, handlers.Length);
			Assert.AreSame(handler1, handlers[0]);
			Assert.AreSame(handler2, handlers[1]);
			Assert.AreSame(handler3, handlers[2]);
			Assert.AreSame(handler4, handlers[3]);

			handlers = tree.GetHandlers(new ComponentName("protocolhandler:*"));

			Assert.AreEqual(4, handlers.Length);
			Assert.AreSame(handler1, handlers[0]);
			Assert.AreSame(handler2, handlers[1]);
			Assert.AreSame(handler3, handlers[2]);
			Assert.AreSame(handler4, handlers[3]);

			handlers = tree.GetHandlers(new ComponentName("protocolhandler:secure=true"));

			Assert.AreEqual(1, handlers.Length);
			Assert.AreSame(handler4, handlers[0]);

			handlers = tree.GetHandlers(new ComponentName("protocolhandler:key=2"));

			Assert.AreEqual(2, handlers.Length);
			Assert.AreSame(handler3, handlers[0]);
			Assert.AreSame(handler4, handlers[1]);
		}
 public void ResolveInSameSession() {
     var context = GetMockContext();
     var m = new PerWebSessionLifestyleManager {ContextProvider = () => context};
     var kernel = new DefaultKernel();
     var model = new ComponentModel(new ComponentName("bla", true), new List<Type> { typeof(object) }, typeof(object), null);
     var activator = kernel.CreateComponentActivator(model);
     m.Init(activator, kernel, model);
     var handler = new DefaultHandler(model);
     var creationContext = new CreationContext(handler, kernel.ReleasePolicy, typeof (object), null, null, null);
     //creationContext.EnterResolutionContext(kernel.GetHandler(), false);
     var instance = m.Resolve(creationContext, kernel.ReleasePolicy);
     Assert.IsNotNull(instance);
     var instance2 = m.Resolve(creationContext, kernel.ReleasePolicy);
     Assert.AreSame(instance, instance2);
 }
コード例 #4
0
		public virtual IHandler Create(ComponentModel model)
		{
			IHandler handler;

			if (model.RequiresGenericArguments)
			{
				handler = new DefaultGenericHandler(model);
			}
			else
			{
				handler = new DefaultHandler(model);
			}

			handler.Init(kernel);
			
			return handler;
		}
コード例 #5
0
		public void RemoveUnbalancedRoot()
		{
			BinaryTreeComponentName tree = new BinaryTreeComponentName();
			DefaultHandler handler1 = new DefaultHandler(new ComponentModel("A", typeof(DefaultHandler), typeof(DefaultHandler)));
			tree.Add(new ComponentName("1000"), handler1);
			tree.Add(new ComponentName("7500"), handler1);
			tree.Add(new ComponentName("6000"), handler1);
			tree.Add(new ComponentName("2000"), handler1);

			tree.Remove(new ComponentName("1000"));
			assertRemoved(tree, 3, new ComponentName("1000"), new ComponentName("6000"));
		}
コード例 #6
0
		public void ComponentNameEmptyProperties()
		{
			BinaryTreeComponentName tree = new BinaryTreeComponentName();
			DefaultHandler handler1 = new DefaultHandler(new ComponentModel("A", typeof(DefaultHandler), typeof(DefaultHandler)));
			DefaultHandler handler2 = new DefaultHandler(new ComponentModel("B", typeof(DefaultHandler), typeof(DefaultHandler)));
			tree.Add(new ComponentName("protocolhandler:key=1"), handler2);
			tree.Add(new ComponentName("protocolhandler"), handler1);

			Assert.AreEqual(handler1, tree.GetHandler(new ComponentName("protocolhandler")));
		}
コード例 #7
0
		public void RemoveBranchNode()
		{
			BinaryTreeComponentName tree = new BinaryTreeComponentName();
			DefaultHandler handler1 = new DefaultHandler(new ComponentModel("A", typeof(DefaultHandler), typeof(DefaultHandler)));

			tree.Add(new ComponentName("1000"), handler1);

			tree.Add(new ComponentName("0500"), handler1);
			tree.Add(new ComponentName("0700"), handler1);
			tree.Add(new ComponentName("0800"), handler1);

			tree.Add(new ComponentName("0400"), handler1);

			tree.Remove(new ComponentName("0500"));
			assertRemoved(tree, 4, new ComponentName("0500"), new ComponentName("0800"));
		}
コード例 #8
0
		public void RemoveNodeWithSiblings()
		{
			BinaryTreeComponentName tree = new BinaryTreeComponentName();
			DefaultHandler handler1 = new DefaultHandler(new ComponentModel("A", typeof(DefaultHandler), typeof(DefaultHandler)));

			tree.Add(new ComponentName("1000"), handler1);
			tree.Add(new ComponentName("0500"), handler1);
			tree.Add(new ComponentName("0500:P=1"), handler1);
			tree.Add(new ComponentName("0500:p=2"), handler1);
			tree.Add(new ComponentName("0400"), handler1);

			tree.Remove(new ComponentName("0500"));
			Assert.AreEqual(4, tree.Count);
			Assert.AreEqual(4, tree.Handlers.Length);
			Assert.AreEqual(2, tree.GetHandlers(new ComponentName("0500")).Length);
			Assert.IsNotNull(tree.GetHandler(new ComponentName("0500:p=2")));
		}
コード例 #9
0
		public void RemoveSibling()
		{
			BinaryTreeComponentName tree = new BinaryTreeComponentName();
			DefaultHandler handler1 = new DefaultHandler(new ComponentModel("A", typeof(DefaultHandler), typeof(DefaultHandler)));

			tree.Add(new ComponentName("1000"), handler1);
			tree.Add(new ComponentName("0500"), handler1);
			tree.Add(new ComponentName("0500:P=1"), handler1);
			tree.Add(new ComponentName("0500:p=2"), handler1);

			tree.Remove(new ComponentName("0500:p=2"));
			assertRemoved(tree, 3, new ComponentName("0500:P=2"), new ComponentName("0500:P=1"));
		}
コード例 #10
0
		public HandlerDebuggerProxy(DefaultHandler handler)
		{
			this.handler = handler;
		}
 public void NoContextThrows() {
     var m = new PerWebSessionLifestyleManager {ContextProvider = () => null};
     var componentModel = new ComponentModel(new ComponentName("bla", true), new List<Type> { typeof(object) }, typeof(object), null);
     var handler = new DefaultHandler(componentModel);
     m.Resolve(new CreationContext(handler, new NoTrackingReleasePolicy(), typeof(object), null, null, null), new NoTrackingReleasePolicy());
 }