C#: Comment puis-je charger dynamiquement/création d'une DLL?

J'ai vu un couple d'exemples qui pourraient peut-être m'aider, mais je n'ai pas beaucoup de temps à explorer comme je viens de constater aujourd'hui que mes patrons ont à la démonstration de cela une semaine plus tôt que prévu, et je tiens à ajouter cette nouvelle fonctionnalité. Je vais essayer et de le garder court et doux.

Ok, c'est comme mon 10ème temps à essayer de droite pour faire clair, j'espère que c'est. C'est une application. Les lignes de données doivent être affichées dans un DataGridView (fait). Certaines lignes sont mis en évidence différemment sur la base des rapports (fait). La plupart des rapports ont leur propre fichier SQL et sont mis en œuvre lors de l'exécution à partir d'un fichier INI (fait). Toutefois, certains rapports besoin d'appeler une Fonction. L'application utilise une base de données SQLite. Je voudrais avoir les Dll qui sont des rapports, toutes de même format, et tous retournent une Liste de ReportRecord. ReportRecord est une classe définie dans mon application principale, mais je voudrais également définir dans chaque DLL lorsqu'ils sont créés. Je veux instancier la DLL, de l'appeler "GetRecords" de la fonction, et l'utiliser dans mon application principale. Voici quelques psuedocode. Les gars si vous pouvez me dire si c'est possible, ou me donner une idée de la meilleure façon de le faire, je l'apprécierais.

PSUEDOCODE

 foreach (string str in System.IO.Directory.GetFiles("C:\\ReportDlls", "*.dll"))
 {
   //Instantiate DLL e.g. newReport
   //_lstReportRecords.AddRange(newReport.GetReportRecords());
 }    

Est-il de toute façon pour ce faire?

Actuellement, j'ai le texte suivant pour compléter jusqu'à ce que j'ai trouver cela:

        private void RefreshReports(string strReportTitle)
        {
            _lstReportRecords = _lstReportRecords.Where(rr => rr.Description != strReportTitle).ToList<ReportRecord>();
            string strColumn = iniFile.GetString(strReportTitle, "Column", "");


            if (strColumn != null)
            {
                _lstReportRecords.AddRange(_dataController.BuildReportList(strColumn, strReportTitle, GetReportSQL(strReportTitle)));
            }
            else
            {
                switch (strReportTitle)
                {
                    case "Improper Indenture":
                        _lstReportRecords.AddRange(_dataController.ImproperIndenture());
                        break;
                    case "Skipping Figure":
                        _lstReportRecords.AddRange(_dataController.SkippingFigure());
                        break;
                    default: break;
                }
            }
            FormatCells();
        }

Merci à tous.

Modifier: Désolé les gars, en regardant ce genre de choses honnêtement, je me sens stupide. Comme, mon esprit va vierge et de tous et ne peut pas se concentrer sur elle. 🙂 Ce que vous les gars ont fourni est probablement la meilleure façon, mais depuis que j'ai d'avoir une qualité de Démo prêt d'ici mardi, et il ne devrait pas y avoir plus de rapports ajoutée nécessitant des fonctions jusqu'alors, je vais garder cette ouverture. Une fois que mon patron est hors de la ville à la démo, je vais travailler sur la mise en œuvre de cette. Mais maintenant, il va rester sans réponse, à moins que je vois un exemple qui est très très (pour 2 ans) vers l'avant.

Je demande que vous gardez cela à l'ouvrir, au moins jusqu'à ce week-end quand j'ai le temps d'aller au cours de cette. Je veux garder les liens et les gens qui m'ont informé de ce qu'ils peuvent être en mesure de m'aider. S'il vous plaît s'il vous plaît.

OriginalL'auteur XstreamINsanity | 2010-09-09