1

J'ai peu de propriétés publiques dans App.xaml.cs qui est dans le projet A et je veux les référencer dans mon projet B. Cependant mon projet A a une référence au projet B, donc je ne peux pas rajouter la référence du projet A dans le projet B, sinon cela entraînera une erreur cyclique. Alors, comment puis-je référencer ces propriétés dans ma bibliothèque de classes? Je ne veux pas utiliser la réflexion :). Comme solution de contournement, j'ai stocké ces propriétés dans une classe dans le projet B (de sorte qu'il peut être référencé dans le projet A ainsi que le projet B) et a rendu ces propriétés statiques et tout fonctionne correctement. Cependant, je suis toujours curieux de savoir si je les avais stockés dans App.xaml.cs? Toutes les options disponibles?Comment puis-je écrire (Application.Current as App) dans ma bibliothèque de classes Silverlight?

Merci à l'avance :)

+0

Ceci n'est pas une réponse mais une troisième bibliothèque pour héberger l'autre 2 :-) –

Répondre

1

La classe App doit exposer les éléments uniquement correspondant au projet d'application. Dès que vous vous êtes rendu compte que vous souhaitiez que ces éléments soient accessibles dans B.dll, ils sont devenus plus pertinents que le projet d'application et n'appartiennent donc plus au projet d'application. Ajouter une classe à B.dll qui porte ces choses comme des propriétés statiques peut être une approche raisonnable. Un autre modèle courant est d'avoir une seule propriété statique Current.

public MyClass 
{ 
    private static MyClass _current = new MyClass(); 
    public static MyClass Current { get { return _current; } } 

    public string SomeInstanceValue { get; set; } 
} 

A et B accéderiez les choses en utilisant le modèle var x = MyClass.Current.SomeInstanceValue. L'avantage de cette approche est qu'elle permet au getter de propriétés Current de déterminer si une instance "en cours" est disponible ou non.

Vous pouvez également consulter la documentation sur ApplicationLifeTimeObjects.

1

Quand A et B ont tous deux besoin de quelque chose, peut-être vous devriez les mettre dans un projet C (C comme commun), puis se référer à C de A et B.

Questions connexes