2010-12-15 4 views

Répondre

2

Vous pouvez utiliser la réflexion. Voici un exemple:

class Program 
{ 
    static void Main() 
    { 
     var assembly = Assembly.Load("System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"); 
     var serverType = assembly.GetType("System.Web.HttpUtility", true); 
     var method = serverType.GetMethod("HtmlEncode", BindingFlags.Static | BindingFlags.Public, null, new[] { typeof(string) }, null); 
     var result = method.Invoke(null, new[] { "<some value>" }); 
     Console.WriteLine(result); 
    } 
} 
+0

Pour autant que je peux voir, il charge l'Assemblée dans le processus en cours d'exécution et appelle ensuite la méthode. Correct? Je pensais à la manière d'appeler la fonction dans l'espace de processus injecté. Comme je l'ai dit, je ne sais pas si cela peut même être fait. Merci d'avoir répondu. – prettyCode

0

Voici quelques exemples de code pour ce faire:

 // Get all loaded assemblies in current application domain 
     Assembly[] assemblies = AppDomain.CurrentDomain.GetAssemblies(); 

     // Get type of int 
     Type intType = assemblies.Select(a => a.GetType("System.Int32")).First(); 

     // Create object of int using its type 
     Object intObj = Activator.CreateInstance(intType); 

     // Call int.ToString() method which returns '0' 
     String result = intObj.GetType().GetMethod("ToString", new Type[] { }).Invoke(intObj, null).ToString();