Sì, è possibile.
innanzitutto creare un interfase con tutti i metodi di registro:
public interface ILogger
{
void Write(string message);
// And much more methods.
}
Creare ora due casi, un esempio fittizio (consente di chiamare DummyLogger
), e un'istanza che invierà i suoi messaggi a Log4Net (Log4NetLogger
).
Per finire, creare una classe di fabbrica:
static public class LogFactory
{
static public ILogger CreateLogger()
{
if (/*Check if Log4Net is available*/)
return new Log4NetLogger();
else
return new DummyLogger();
}
}
Si potrebbe verificare se Log4Net è disponibile semplicemente controllando se il file è nel bidone-cartella. Qualcosa di simile:
File.Exists(AppDomain.CurrentDomain.BaseDirectory + "Log4Net.dll")
Ma posso immaginare che si desidera fare altri controlli, come se esiste nel GAC o qualsiasi altra cosa.
Ora è possibile utilizzare il fabbrica per creare il tuo logger e "scrivere" i messaggi nel log:
ILogger logger = LoggerFactory.CreateLogger();
logger.Write("I am logging something!");
fonte
2013-04-29 12:17:38
Ne fanno un plugin. Vedi [MEF] (http://mef.codeplex.com/). – Oded
300kb? Non è niente, spediscilo. –
@SteveWellens Niente? L'exe ha solo 15kb e non ha bisogno di essere installato. –