Application hôte simple recherchant des assemblages par interface spéciale et en important à partir de la liste des délégués, elle est maintenant Func<string,string>
. Ensuite, il peut exécuter n'importe quel Func<T,T>
et il n'y a pas de problème. Problèmes commence lorsque l'un de ces Func
essaie d'accéder au fichier, qui n'existe pas.Liaison tardive C# et exceptions de fichier
Aucun bloc try-catch, pas File.Exists
n'a pas aide - lorsque la fonction tente d'accéder à un fichier (de toute façon, lire, flux obtenir, vérifier, etc.) - l'application échoue tout juste avec FileNotFound
dans mscorlib
.
Comment ça peut être réparé? App est vraiment critique, et je ne peux pas effectuer de vérification de fichiers dans l'application, seulement dans les assemblages.
UPD: Oui, les délégués contiennent la logique async
.
UPD2: Certaines parties du code:
try
{
if(!File.Exists(filePath)) return null;
using (StreamWriter writer = new StreamWriter(destinationFilePath))
{
using (StreamReader reader = new StreamReader(filePath))
{
//some logic there
}
}
}
catch
{
}
Exception lancée à File.Exists().
Ce code permet d'importer des assemblages.
Commands = new Dictionary<string, Func<string, string>>();
foreach (string f in fileNames)
{
Assembly asm = Assembly.LoadFrom(f);
var types = asm.GetTypes();
foreach(Type t in types)
{
if (t.GetInterface("IMountPoint") != null)
{
var obj = Activator.CreateInstance(t);
var cmds = ((IMountPoint)obj).Init(EntryPoint);
foreach (var cmd in cmds)
{
if (!Commands.ContainsKey(cmd.Key.Trim().ToUpper()))
{
Commands.Add(cmd.Key.Trim().ToUpper(), cmd.Value);
}
}
}
}
}
Ce code à exécuter les délégués:
string input = Console.ReadLine();
string res = Commands[command_key](input);
Pouvez-vous fournir du code s'il vous plaît? – Waescher
Ces assemblys sont-ils chargés dans le même domaine d'application? – rene
Quel type de code voulez-vous? La solution est grande et je pense que j'ai écrit tout ce qui était nécessaire. –