Sto scrivendo un'utilità impresa che raccoglie informazioni sulle eccezioni e scrive nel registro eventi di Windows, invia un'email, ecc. Questa classe di utilità verrà utilizzata da tutte le applicazioni della società: web, BizTalk , Servizi Windows, ecc.
Attualmente questa classe:
- contiene lo stato assegnato ad esso tramite proprietà pubbliche
- chiama i metodi .NET Framework per raccogliere informazioni sui dettagli di runtime. Sono incluse chiamate a varie proprietà e metodi da
System.Environment
,Reflection
dettagli, ecc.
Questa implementazione ha il vantaggio di consentire a tutti quei chiamanti di non dover effettuare autonomamente le stesse chiamate. Ciò significa meno codice per il chiamante da dimenticare, rovinare, ecc.
Questa classe di stato (per favore qual è la frase che sto cercando [come DTO]?) sa come risolvere / determinare i dettagli del runtime (come l'indirizzo IP e il nome del computer su cui è in esecuzione)?
Mi sembra, a pensarci due volte, che sia pensato per essere una classe che dovrebbe contenere lo stato e non sapere come chiamare in .NET Framework per trovare informazioni.
var myEx = new AppProblem{MachineName="Riker"};
//Will get "Riker 10.0.0.1" from property MachineLongDesc
Console.WriteLine("full machine details: " + myEx.MachineLongDesc);
public class AppProblem
{
public string MachineName{get;set;}
public string MachineLongDesc{
get{
if(string.IsNullOrEmpty(this.MachineName)
{
this.MachineName = Environment.MachineName;
}
return this.MachineName + " " + GetCurrentIP();
}
}
private string GetCurrentIP()
{
return System.Net.Dns.GetHostEntry(this.MachineName)
.AddressList.First().ToString();
}
}
Questo codice è stato scritto a mano dalla memoria e presentato per semplicità, cercando di illustrare il concetto.