由于SerializationException,无法在C#中通过AppDomain传递委托对象

时间:2015-02-09 05:39:23

标签: c# serialization delegates appdomain remoting

我正在尝试创建一个代理从一个AppDomain传递给另一个AppDomain。

但是只有在传递Delegates时它才会抛出Error。如果传递像String这样的对象,它可以正常工作。

此外,如果通过构造函数从设置中删除委托并使用方法设置,我仍然无法将其传递给对象。

namespace TESTNS1 {
    class Program {
        static void Main(string[] args) {
            try {
                Program obj = new Program();
                NS22.testappdom.MYDelT tt = new NS22.testappdom.MYDelT(obj.testingg);

                NS22.testappdom obb = new NS22.testappdom(tt);
                obb.invokeT();


                AppDomain app1 = AppDomain.CreateDomain("newdom");
                NS22.testappdom ob2 = (NS22.testappdom)app1.CreateInstanceFromAndUnwrap(Assembly.GetExecutingAssembly().Location, typeof(NS22.testappdom).FullName,
                    false, BindingFlags.Default, null, new object[] { tt }, null, null, null);
                ob2.invokeT();
            } catch (Exception ex) {
                Console.WriteLine(ex.ToString());
            }
            Console.ReadLine();
        }

        public bool testingg (Object obj) {
            Console.WriteLine("testingg called..");
            return false;
        }
    }
}

namespace NS22 {
    class testappdom : MarshalByRefObject {

        public delegate bool MYDelT(Object obj);
        public MYDelT delee;

        public testappdom() {
            Console.WriteLine("Init.");
        }

        public testappdom(MYDelT dd) {
            Console.WriteLine("Init1.");
            this.delee = dd;
        }

        public void invokeT() {
            this.delee(new Object());
        }
    }
}

0 个答案:

没有答案