Bonjour,
je viens de débuter un nouveau projet WPF.
J'ai choisi d'utiliser MEF et MVVM light pour ce projet.
Je suis en train de créer l'architecture du projet et j'ai quelques problèmes techniques.
= = = > Présentation de l'architecture :
Mon projet est pour l'instant découpé en plusieurs répertoire
Common/UI/ (contient mes ressources graphiques)
Common/library (contient mes librairies
Contract/Inteface
Contract/MetaData
Data/
Model/
Test/
View/
ViewModel/ViewModel
ViewModel/ViewModel.Interface
et le projet Client
Cette décomposition n'est pas fixé pour l'instant j'essaye de mettre les différents composants de base afin de voir ce que je conserve ou non.
Sur les conseils d'un ami, j'ai utilisé un Locator maison pour les liaisons
View <=> ViewModel
Pour la navigation, j'utilise le Messenger.Default de MVVM Light.
J'essaye maintenant d'ajouter Log4net.
je voulais le faire avec MEF.
J'ai créé dans le sous projet Common :
LogService.cs
et l'interface IlogService.cs
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49 /// <summary> /// Logging service that manages tracing and logging activities for the /// web site application. /// </summary> [Export(typeof(ILogService))] //[Trace] public class LogService : ILogService { private static readonly ILog Log = LogManager.GetLogger(typeof(LogService)); private readonly ILog log4Net; //[ImportingConstructor] public LogService() { ILog log = LogManager.GetLogger(typeof(LogService)); log4net.Config.XmlConfigurator.Configure(); log.Info("test"); } public void test() { ILog log = LogManager.GetLogger(typeof(LogService)); log.Info("test"); } [Import("Log4NetConfiguration", AllowRecomposition = true)] public string Log4NetConfiguration { get; set; } public void OnImportsSatisfied() { Log.DebugFormat(CultureInfo.InvariantCulture, "Log4NetConfiguration = {0}", this.Log4NetConfiguration); if (string.IsNullOrEmpty(this.Log4NetConfiguration)) { //log4net.Config.XmlConfigurator //this.log4Net log4net.Config.XmlConfigurator.Configure(); } else { //log4net.Config.XmlConfigurator.Configure(this.Log4NetConfiguration); //this.log4Net.Configure(this.Log4NetConfiguration); } } }
Le souci vient que lorsque dans mon MainViewModel.cs : (dans le sous projet ViewModel
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 public interface ILogService { void test(); }
j'ajoute :
il me mets que mon locator n'existe pas.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 [Import(typeof(ILogService))] public ILogService LogService { get; set; }
Première question :
Je me suis demandé si en utilisant MEF.
Il n'était pas nécessaire de travailler dans le même namespace.
C'est à dire mon Locator (En Export) pour mes ViewModel (qui importe) doivent être dans le même sous projet pour que cela fonctionne ?
Deuxième Question :
Vu que mon logger et mon MainViewModel ne sont pas dans le même
sous projet, alors il n'est pas possible de faire l'import export d'où l'erreur.
Troisième question :
Avez vous des propositions pour la réalisation de ma librairie pour mon Log4net ?
Merci d'avance.
Partager