Einzelnen Beitrag anzeigen

Waldteufel
(Gast)

n/a Beiträge
 
#2

Re: [C#] Liste "by Reference" zwischen AppDomains

  Alt 18. Mär 2006, 17:47
Hi Community.



Ich hab das Problem selbst gelöst. Man muss einfach nur eine Methode definieren, die die Setzung des Werts in der Liste übernimmt, und schon klappts.

Code:
using System;
using System.Collections.Generic;
using System.Reflection;
using System.Runtime.Remoting;
 
namespace xyxyxyx {
  class dasObjekt : MarshalByRefObject {
    public Dictionary<string, object> config;
 
    public dasObjekt() {
      config = new Dictionary<string, object>();
    }
 
    public void setConf(string key, object val) {
      config[key] = val;
    }
 
    public void huhu() {
      AppDomain myDomain = AppDomain.CreateDomain("myDomain");
 
      myType myObject = myDomain.CreateInstanceAndUnwrap(
                          Assembly.GetAssembly(typeof(myType)).FullName,
                          typeof(myType).FullName
                        ) as myType;
 
      myObject.dingsda(this);
    }
 
    public void dump() {
      foreach (KeyValuePair<string, object> y in config)
        Console.WriteLine("config[{0}] = {1}", y.Key, y.Value);
    }
 
    public static void Main() {
      dasObjekt x = new dasObjekt();
      x.huhu();
      x.dump();
      Console.ReadLine();
    }
  }
 
  class myType : MarshalByRefObject {
    public myType() {
    }
 
    public void dingsda(dasObjekt x) {
      x.setConf("x", "y");
    }
  }
}
Wenn man sich vor Augen hält, welcher Code in welcher AppDomain ausgeführt wird, erscheint es im Nachhinein ziemlich simpel.
  Mit Zitat antworten Zitat