public void DummyMethod() { CompositeBuilderInfo <MyComposite> cbi = null; CompositeBuilder cb = null; { #region CompositeCreationCode6 // 'cbi' is of type CompositeBuilderInfo<MyComposite> MyComposite prototype = cbi.Prototype(); prototype.MyProperty = "InitialValue"; MyComposite instance = cbi.Instantiate(); // 'instance' and 'prototype' now reference to same object, // but setting instance.MyProperty to null will fail. #endregion } { #region CompositeCreationCode7 // 'cb' is of type CompositeBuilder MyComposite prototype = cb.Prototype <MyComposite>(); // Alternatively, prototype could be acquired this way: MyComposite prototype2 = (MyComposite)cb.PrototypeFor(typeof(MyComposite)); // 'prototype' and 'prototype2' reference to same object prototype.MyProperty = "InitialValue"; MyComposite instance = cb.Instantiate <MyComposite>(); // 'instance, 'prototype' and 'prototype2' all reference // to the same object. // Setting instance.MyProperty to null will fail. #endregion } }
public static void DummyMethod() { StructureServiceProvider ssp = null; Type myCompositeType = null; #region CompositeCreationCode1 // Acquiring CompositeBuilderInfo CompositeBuilderInfo <MyComposite> cbi = ssp.NewPlainCompositeBuilder <MyComposite>(); // Acquiring CompositeBuilder, type of composite not known at compile time CompositeBuilder cb = ssp.NewPlainCompositeBuilder(myCompositeType); // myCompositeType is of System.Type // Acquiring CompositeBuilder and using multiple types to filter out possible composites CompositeBuilder cbm = ssp.NewPlainCompositeBuilder(new[] { typeof(MyCompositePartialType1), typeof(MyCompositePartialType2) }); #endregion { #region CompositeCreationCode2 MyComposite composite = cbi.Instantiate(); #endregion } { #region CompositeCreationCode3 MyComposite composite = cb.Instantiate <MyComposite>(); MyComposite composite2 = (MyComposite)cb.InstantiateWithType(typeof(MyComposite)); // Both composite and composite2 will be same object. #endregion } { #region CompositeCreationCode4 MyCompositePartialType1 composite1 = cbm.Instantiate <MyCompositePartialType1>(); MyCompositePartialType2 composite2 = cbm.Instantiate <MyCompositePartialType2>(); // composite1 and composite2 may be different objects. #endregion } }