/// <summary> /// 生成容器 /// </summary> /// <returns>容器</returns> private CatLib.Container.Container MakeContainer() { var container = new CatLib.Container.Container(); container.Instance("ContainerHelperTests", this); container.Instance(typeof(ContainerHelperTests).ToString(), this); return(container); }
public void CanUnBind() { var container = new CatLib.Container.Container(); var bindData = container.Bind("CanUnBind", (app, param) => "hello world", false); Assert.AreEqual("hello world", container.Make("CanUnBind").ToString()); bindData.UnBind(); Assert.AreEqual(null, container.Make("CanUnBind")); }
public void CheckAddIllegalInterceptor() { var container = new CatLib.Container.Container(); var bindData = new CatLib.Container.BindData(container, "CheckAddIllegalInterceptor", (app, param) => "hello world", false); Assert.Throws <ArgumentNullException>(() => { bindData.AddInterceptor(null); }); }
public void CheckIllegalResolving() { var container = new CatLib.Container.Container(); var bindData = new CatLib.Container.BindData(container, "CanAddOnResolving", (app, param) => "hello world", false); Assert.Throws <ArgumentNullException>(() => { bindData.OnResolving(null); }); }
public void AddContextualRepeat() { var container = new CatLib.Container.Container(); var bindData = new CatLib.Container.BindData(container, "AddContextualRepeat", (app, param) => "hello world", false); bindData.AddContextual("service", "service given"); ExceptionAssert.Throws <RuntimeException>(() => { bindData.AddContextual("service", "service given"); }); }
public void CanAddOnResolving() { var container = new CatLib.Container.Container(); var bindData = new CatLib.Container.BindData(container, "CanAddOnResolving", (app, param) => "hello world", false); bindData.OnResolving((bind, obj) => null); var data = bindData.ExecResolvingDecorator(new CatLib.Container.Container()); Assert.AreEqual(null, data); }
public void CheckNeedsIsNotNull() { var container = new CatLib.Container.Container(); var bindData = new CatLib.Container.BindData(container, "NeedsIsNotNull", (app, param) => "hello world", false); var needs = bindData.Needs("TestService"); var needsWithType = bindData.Needs <BindDataTest>(); Assert.AreNotEqual(null, needs); Assert.AreNotEqual(null, needsWithType); }
public void CheckIllegalUnBindInput() { var container = new CatLib.Container.Container(); var bindData = container.Bind("CanUnBind", (app, param) => "hello world", false); bindData.UnBind(); Assert.Throws <RuntimeException>(() => { bindData.Alias("hello"); }); }
/** * Container 是一个特殊的组件,一般情况下CatLib提供的App就继承自Container实例。 * 但您也可以自建自己的Container. */ public void Start() { CatLib.Container.Container container = new CatLib.Container.Container(); container.OnResolving((bind, obj) => { Debug.Log("(Global) Container.Resolving() , " + obj.GetType()); return(obj); }); NormalBindDemo(container); }
public void CanGetContextual() { var container = new CatLib.Container.Container(); var bindData = new CatLib.Container.BindData(container, "NeedsIsNotNull", (app, param) => "hello world", false); bindData.Needs("need1").Given("abc"); bindData.Needs("need2").Given <BindDataTest>(); Assert.AreEqual("abc", bindData.GetContextual("need1")); Assert.AreEqual(typeof(BindDataTest).ToString(), bindData.GetContextual("need2")); Assert.AreEqual("empty", bindData.GetContextual("empty")); }
public void CanOnRelease() { var container = new CatLib.Container.Container(); var bindData = new CatLib.Container.BindData(container, "CanAddOnRelease", (app, param) => "hello world", true); bindData.OnRelease((bind, obj) => { Assert.AreEqual("Test", obj); Assert.AreSame(bindData, bind); }); container.Instance("CanAddOnRelease", "Test"); container.Release("CanAddOnRelease"); }
public void CheckIllegalAlias() { var container = new CatLib.Container.Container(); var bindData = new CatLib.Container.BindData(container, "CheckIllegalAlias", (app, param) => "hello world", false); Assert.Throws <ArgumentNullException>(() => { bindData.Alias(null); }); Assert.Throws <ArgumentNullException>(() => { bindData.Alias(string.Empty); }); }
public void CanGiven() { var container = new CatLib.Container.Container(); var bindData = new CatLib.Container.BindData(container, "CanGiven", (app, param) => "hello world", false); var givenData = new CatLib.Container.GivenData(bindData); givenData.Needs("needs1"); givenData.Given("hello"); Assert.AreEqual("hello", bindData.GetContextual("needs1")); givenData = new CatLib.Container.GivenData(bindData); givenData.Needs("needs2"); givenData.Given <GivenDataTest>(); Assert.AreEqual(typeof(GivenDataTest).ToString(), bindData.GetContextual("needs2")); }
public void CanAddAlias() { var container = new CatLib.Container.Container(); var bindData = container.Bind("CanAddAlias", (app, param) => "hello world", false); bindData.Alias("Alias"); bindData.Alias <BindDataTest>(); var textAliasGet = container.GetBind("Alias"); Assert.AreSame(textAliasGet, bindData); var classAliasGet = container.GetBind(typeof(BindDataTest).ToString()); Assert.AreSame(bindData, textAliasGet); Assert.AreSame(bindData, classAliasGet); }
public void CheckGivenIllegalValue() { var container = new CatLib.Container.Container(); var bindData = new CatLib.Container.BindData(container, "CanGiven", (app, param) => "hello world", false); var givenData = new CatLib.Container.GivenData(bindData); givenData.Needs("needs"); ExceptionAssert.Throws <ArgumentNullException>(() => { givenData.Given(null); }); ExceptionAssert.Throws <ArgumentNullException>(() => { givenData.Given(string.Empty); }); }
public void CanAddInterceptor() { var container = new CatLib.Container.Container(); var bindData = new CatLib.Container.BindData(container, "CanAddInterceptor", (app, param) => "hello world", false); var newInterceptorClass = new AddInterceptorClass(); bindData.AddInterceptor <AddInterceptorClass>(); bindData.AddInterceptor(newInterceptorClass); var interceptor = bindData.GetInterceptors(); Assert.AreNotEqual(null, interceptor); Assert.AreEqual(2, interceptor.Length); Assert.AreSame(typeof(AddInterceptorClass), interceptor[0].GetType()); Assert.AreSame(interceptor[1], newInterceptorClass); Assert.AreNotSame(interceptor[0], interceptor[1]); }
public void CheckIllegalRelease() { var container = new CatLib.Container.Container(); var bindData = new CatLib.Container.BindData(container, "CheckIllegalRelease", (app, param) => "hello world", false); Assert.Throws <ArgumentNullException>(() => { bindData.OnRelease(null); }); Assert.Throws <RuntimeException>(() => { bindData.OnRelease((bind, obj) => { Assert.Fail(); }); container.Instance("CheckIllegalRelease", "Test"); container.Release("CheckIllegalRelease"); }); }
/// <summary> /// 生成容器 /// </summary> /// <returns>容器</returns> private CatLib.Container.Container MakeContainer() { var container = new CatLib.Container.Container(); return(container); }
internal object TriggerRelease(object instance) { return(CatLibContainer.Trigger(this, instance, release)); }
internal object TriggerAfterResolving(object instance) { return(CatLibContainer.Trigger(this, instance, afterResolving)); }
/// <summary> /// Initializes a new instance of the <see cref="BindData"/> class. /// </summary> /// <param name="container">The container instance.</param> /// <param name="service">The service name.</param> /// <param name="concrete">The service concrete.</param> /// <param name="isStatic">Whether the service is singleton(static).</param> public BindData(CatLibContainer container, string service, Func <IContainer, object[], object> concrete, bool isStatic) : base(container, service) { Concrete = concrete; IsStatic = isStatic; }
protected CatLib.Container.Container MakeContainer() { CatLib.Container.Container container = new CatLib.Container.Container(); return(container); }