Dans le projet A, j'ai une classe statique qui stocke les données pour les types spécifiques, ces données est initialisé dans le constructeur statiqueComment au niveau mondial ajouter des données à une classe statique dans un autre dll
public static class MyStaticClass
{
private static readonly Dictionary<Type, object> data = new Dictionary<Type, object>();
static MyStaticClass() { /*fill data here*/ }
public static object GetData(Type type) { return data[type]; }
public static void SetData(Type type, object o) { data[type] = o; }
}
Projet B utilise projet R. Le projet B est aussi une bibliothèque. Dans le projet B, je souhaite utiliser cette classe non seulement pour les types ajoutés dans le constructeur statique, mais aussi pour les types définis dans B et ses dépendances.
Fondamentalement, quelque part dans B je veux avoir le code suivant:
MyStaticClass.SetData(typeof(TypeInB), new object());
MyStaticClass.SetData(typeof(TypeInDllUsedByB), new object());
Quelle serait l'endroit approprié pour mettre ce code dans le projet B? Je projette B il y a plusieurs endroits que je voudrais appeler GetData
sans avoir à m'inquiéter si le code précédent a déjà été exécuté.
J'ai pensé à le placer dans static TypeInB()
et toutes les autres classes que je voudrais utiliser, mais cela ne fonctionnera pas pour les classes définies dans d'autres assemblées.
alors prenez simplement la classe du projet A et mettez-la dans le projet b? – Spooks
@Spooks, pas vraiment - Je conseille de créer un wrapper qui transmettra l'appel à la classe du projet A. Il peut y avoir plusieurs méthodes dans cette classe et ils ont une implémentation non triviale et je suggère de réutiliser plutôt que copiez-le. – VinayC