using System; using System.Linq; using NLog; using Perfusion; namespace JetKarmaBot { public class LogInfo : ObjectInfo { public override ObjectInfo Clone() => new LogInfo(); public override object GetInstance(IContainer c, Type requester = null) { return LogManager.GetLogger(requester != null ? getTypeName(requester) : ""); } private string getTypeName(Type t) { return (t.DeclaringType == null ? t.Namespace + "." + t.Name : getTypeName(t.DeclaringType) + "." + t.Name) + (t.GenericTypeArguments.Length > 0 ? "<" + string.Join(",", t.GenericTypeArguments.Select(getTypeName)) + ">" : ""); } } public class VerbInfo : ObjectInfo { public override ObjectInfo Clone() => new VerbInfo(); public override object GetInstance(IContainer c, Type requester = null) { return c.ResolveObject(new VerbCommandRouter(requester != null ? requester.Name : "")); } } }