[英]Call a method from Static Class passing Type of Dynamic variable with Generics
我該如何從傳遞通用類型的動態類型的靜態類中調用方法。 這是我的靜態類:
public static class Log<T>
{
private readonly static ILog Logger = LogManager.GetLogger(typeof(T));
public static void LogInfo(string message)
{
Logger.Info(message);
}
}
我想這樣調用LogInfo:
Log<myObject.GetType()>.LogInfo("Some String");
我的問題是關於如何在通用類型中傳遞myObject類型,因為此對象的類型是動態的。
我想這樣調用LogInfo:
Log<myObject.GetType()>.LogInfo("Some String");
為什么? 您為什么不這樣做:
public static class Log {
private static readonly Dictionary<Type, ILog> loggers =
new Dictionary<Type, ILog>();
public static void LogInfo(Type type, string message) {
var logger = Log.GetLoggerForType(type);
logger.Info(message);
}
public static void LogInfo<T>(string message) {
LogInfo(typeof(T), message);
}
private static ILog GetLoggerForType(Type type) {
ILog logger;
if(!loggers.TryGetValue(type, out logger)) {
logger = LogManager.GetLogger(type);
loggers.Add(type, logger);
}
return logger;
}
}
注意這不是,不是,不是線程安全的。 我想傳達這個想法。
然后:
Log<myObject.GetType()>.LogInfo("Some String");
可以替換為
Log.LogInfo(myObject.GetType(), "Some String");
或者甚至可以更進一步,添加一個過載,讓您說
Log.LogInfo(myObject, "Some String");
(只需在LogInfo
調用object.GetType
)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.