2013-12-07 5 views
1

Я пытаюсь реализовать версию примера 1 отсюда http://msdn.microsoft.com/en-us/library/System.MarshalByRefObject(v=vs.110).aspx в свой код.Как использовать MarshalByRefObject для вызова класса в другом домене приложения

Моя цель - иметь класс с некоторыми методами, затем загрузить этот класс в другой appdomain и вызвать его метод.

до сих пор у меня есть:

public class diffDomain : MarshalByRefObject 
{ 
     public int getNumber() 
     { 
      return 5; 
     } 
} 
internal static class JITCompiler 
{ 
     internal static wantNumber() 
     { 
      AppDomain domain = AppDomain.CreateDomain("MyDomain"); 
      var newSearch = (diffDomain)domain.CreateInstanceAndUnwrap(
          Assembly.GetExecutingAssembly().FullName, 
          "diffDomain"); 
     } 
} 

Я получаю ошибку на линии Var newSearch:

Could not load type 'diffDomain' from assembly 'SVM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null'. 

ответ

2

Ваших сборки/пространство имен может быть неправильными. Чтобы избежать таких ошибок, попробуйте следующее:

var newSearch = (diffDomain)domain.CreateInstanceAndUnwrap(
          typeof(diffDomain).Assembly.FullName, 
          typeof(diffDomain).FullName); 
+0

Спасибо за помощь :) – user1348463

0

Что вы положили в вашем вопросе не ваш реальный код, так как он имеет очевидную синтаксическую ошибку.

То, что вы поставили в своем вопросе, также не показывает проблему, которую вы испытываете, поскольку вы исключили соответствующую информацию.

Что я думаю, что вы сделали, это положить ваши классы в пространство имен. CreateInstanceAndUnwrap ожидает полное имя. В примере, который вы указали, помещается класс в глобальное пространство имен, поэтому неквалифицированное имя и квалифицированные имена одинаковы. Вероятно, они не в том, что вы пытаетесь.