示例#1
0
        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
            }
        }
示例#2
0
 /// <summary>
 /// Helper method to easily invoke <see cref="CompositeBuilder.InstantiateWithType(Type)"/> method when type is known at compile-time.
 /// </summary>
 /// <typeparam name="TComposite">The type of the composite.</typeparam>
 /// <param name="builder">The <see cref="CompositeBuilder"/>.</param>
 /// <returns>The return value of <see cref="CompositeBuilder.InstantiateWithType(Type)"/> casted to <typeparamref name="TComposite"/>.</returns>
 public static TComposite Instantiate <TComposite>(this CompositeBuilder builder)
 {
     return((TComposite)builder.InstantiateWithType(typeof(TComposite)));
 }