public void Execute()
        {
            var obj1 = new CanNotMarshalByRef();

            obj1.PrintDomain();

            var newDomain = AppDomain.CreateDomain("new domain");

            /* ** ERROR **  "Sazare.Samples.MarshalByRefObjectSamples01+CanNotMarshalByRef"はシリアル化可能として設定されていません。
             * CanNotMarshalByRef obj2 =
             * (CanNotMarshalByRef) newDomain.CreateInstanceAndUnwrap(
             * Assembly.GetExecutingAssembly().FullName,
             * typeof(CanNotMarshalByRef).FullName
             * );
             *
             * obj2.PrintDomain();
             */

            var obj3 =
                (CanMarshalByRef)newDomain.CreateInstanceAndUnwrap(
                    Assembly.GetExecutingAssembly().FullName,
                    typeof(CanMarshalByRef).FullName
                    );

            obj3.PrintDomain();

            //
            // Serializable属性を付加しただけでは、実行は行えるが、別のAppDomain内からの
            // 実行ではなくて、呼び元のAppDomainでの実行となる。
            // (つまり、AppDomainの境界を越えていない。)
            //
            var obj4 =
                (CanSerialize)newDomain.CreateInstanceAndUnwrap(
                    Assembly.GetExecutingAssembly().FullName,
                    typeof(CanSerialize).FullName
                    );

            obj4.PrintDomain();
        }
        public void Execute()
        {
            var obj1 = new CanNotMarshalByRef();
            obj1.PrintDomain();

            var newDomain = AppDomain.CreateDomain("new domain");

            /* ** ERROR **  "Sazare.Samples.MarshalByRefObjectSamples01+CanNotMarshalByRef"はシリアル化可能として設定されていません。
              CanNotMarshalByRef obj2 =
              (CanNotMarshalByRef) newDomain.CreateInstanceAndUnwrap(
              Assembly.GetExecutingAssembly().FullName,
              typeof(CanNotMarshalByRef).FullName
              );

              obj2.PrintDomain();
              */

            var obj3 =
                (CanMarshalByRef) newDomain.CreateInstanceAndUnwrap(
                    Assembly.GetExecutingAssembly().FullName,
                    typeof(CanMarshalByRef).FullName
                                      );

            obj3.PrintDomain();

            //
            // Serializable属性を付加しただけでは、実行は行えるが、別のAppDomain内からの
            // 実行ではなくて、呼び元のAppDomainでの実行となる。
            // (つまり、AppDomainの境界を越えていない。)
            //
            var obj4 =
                (CanSerialize) newDomain.CreateInstanceAndUnwrap(
                    Assembly.GetExecutingAssembly().FullName,
                    typeof(CanSerialize).FullName
                                   );

            obj4.PrintDomain();
        }