Je travaille sur une application de bureau pour laquelle j'ai besoin de charger l'assemblage et de l'exécuter dans un domaine d'application différent.Le nom de type ou d'espace de noms est introuvable
Pour charger l'ensemble j'ai écrit:
public static DataTable GetAllPluginNames(string[] args)
{
SqlConnection sConnection = new SqlConnection(ConfigurationSettings.AppSettings["ConnectionString"]);
//ToDo: create a table of one column - only name of the plugin and return that.
//ToDo: refer the code from MFAssemblyValidator from MFPluggerService.
DataTable dt = null;
List<string> assemblyNames = new List<string>();
Assembly[] oAssemblies = new Assembly[args.Length];
for (int assemblyCount = 0; assemblyCount < args.Length; assemblyCount++)
{
oAssemblies[assemblyCount] = Assembly.LoadFile(args[assemblyCount]);
try
{
foreach (Type oType in oAssemblies[assemblyCount].GetTypes())
{
// Check whether class is inheriting from IMFDBAnalyserPlugin.
if (oType.GetInterface("IMFDBAnalyserPlugin") == typeof(IMFDBAnalyserPlugin))
{
assemblyNames.Add(args[assemblyCount].Substring(args[assemblyCount].LastIndexOf("\\") + 1));
}
}
return dt;
}
catch (Exception ex)
{
lblError.Text = "ERROR";
}
// Passing data one application domain to another.
AppDomain.CurrentDomain.SetData("AssemblyNames", assemblyNames.ToArray());
}
}
mais typeof(IMFDBAnalyserPlugin))
est montrant une erreur d'espace de noms.
IMFDBAnalyserPlugin est la classe d'interface dans mon programme:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace MFDBAnalyser
{
public interface IMFDBAnalyserPlugin
{
void ExecutePlugin();
}
}
Ce qui pourrait être le problème ?? Quelqu'un peut-il m'aider !!
cela ne fonctionne pas aussi .... – Srivastava
Vous devrez fournir la référence entièrement qualifiée pour 'IMFDBAnalyserPlugin' * chaque fois que vous l'utiliserez dans votre code, sauf si vous choisissez d'ajouter une directive' using' à le haut de votre fichier de code. J'ai mis à jour mon message avec la syntaxe complète. –