Domanda

Ho poche proprietà pubbliche in app.xaml.cs che è nel progetto A e voglio indirizzarle nel mio progetto B. Tuttavia il mio progetto A ha un riferimento al progetto B, quindi non posso aggiungere di nuovo il riferimento del progetto A in Progetto B Altrimenti comporterà un errore ciclico. Allora come posso fare riferimento a quelle proprietà nella mia biblioteca di classe? Non voglio usare la riflessione :).

Come soluzione alternativa ho archiviato quelle proprietà in una classe nel progetto B (quindi può essere indirizzata nel progetto A e nel progetto B) e ha reso le proprietà statiche e tutte funziona bene. Tuttavia sono ancora curioso di sapere cosa se li avessi archiviati in app.xaml.cs? Qualche opzione disponibile?

Grazie in anticipo :)

È stato utile?

Soluzione

La classe dell'app dovrebbe esporre cose che sono solo rilevante per il progetto di applicazione. Non appena ti sei reso conto che volevi queste cose accessibili in B.DLL, sono diventate rilevanti per qualcosa di più del semplice progetto di applicazione e quindi non appartenevano più al progetto di applicazione.

L'aggiunta di una classe a B.DLL che porta queste cose come proprietà statiche potrebbe essere un approccio ragionevole. Un altro modello comune è avere un singolo Current Proprietà statica.

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

    public string SomeInstanceValue { get; set; }
}

Sia A che B accederebbero alle cose usando il modello var x = MyClass.Current.SomeInstanceValue. Il vantaggio di questo approccio è che consente il Current Proprietà getter per determinare se un'istanza "corrente" è disponibile o meno.

Potresti anche voler rivedere la documentazione su APPLICAZIONELIFEtimeObjects.

Altri suggerimenti

Quando A e B hanno entrambi bisogno di qualcosa, forse dovresti metterli in un progetto C (C come in comune) e quindi fare riferimento a C da A e B.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top