log4net:动态创建记录器,我应该担心什么吗?

我需要动态创建记录器,所以有了这里的post和reflection器的帮助我已经设法动态创建记录器,但我想知道我是否应该担心别的……我不知道其含义可以做到。 public static ILog GetDyamicLogger(Guid applicationId) { Hierarchy hierarchy = (Hierarchy)LogManager.GetRepository(); RollingFileAppender roller = new RollingFileAppender(); roller.LockingModel = new log4net.Appender.FileAppender.MinimalLock(); roller.AppendToFile = true; roller.RollingStyle = RollingFileAppender.RollingMode.Composite; roller.MaxSizeRollBackups = 14; roller.MaximumFileSize = “15000KB”; roller.DatePattern = “yyyyMMdd”; roller.Layout = new log4net.Layout.PatternLayout(); roller.File = “App_Data\\Logs\\”+applicationId.ToString()+”\\debug.log”; roller.StaticLogFileName = true; PatternLayout patternLayout = new PatternLayout(); patternLayout.ConversionPattern = “%date [%thread] %-5level […]

如何正确表示空白字符

我想知道如何在C#中表示空白字符。 我找到了空字符串表示string.Empty 。 有什么类似的东西代表空白角色吗? 我想做这样的事情: test.ToLower().Split(string.Whitespace) //test.ToLower().Split(Char.Whitespace)

使用Reflection捕获方法状态

有没有办法使用.NETreflection来捕获所有参数/局部变量的值?

如何添加对Microsoft.VisualBasic.dll的引用?

using Microsoft.VisualBasic; Microsoft.VisualBasic.Interaction.InputBox(“Favourite RPG?”, “Game”, “Cool!”); 所以这样做基本上是问用户他们最喜欢的RPG。 然后它显示默认值。 我知道这是一个小例子,但我的程序不会运行,因为我收到此错误: The type or namespace name ‘Interaction’ does not exist in the namespace ‘Microsoft.VisualBasic’ (are you missing an assembly reference?) 最初我在这里发现了这个

为什么TimeSpan和Guid Structs可以比较为null?

我注意到一些.NET结构可以与null进行比较。 例如: TimeSpan y = new TimeSpan(); if (y == null) return; 将编译得很好(与Guid结构相同)。 现在我知道stucts是值类型,并且上面的代码不应该编译,除非有一个operator ==的重载,它接受一个对象。 但是,据我所知,没有。 我用Reflector和MSDN上的文档查看了这个类。 他们两个确实实现了以下接口: IComparable, IComparable, IEquatable 但是,尝试使用相同的接口似乎没有帮助: struct XX : IComparable, IComparable, IEquatable { public int CompareTo(Object obj) { return 0; } public int CompareTo (XX other){ return 0; } public bool Equals (XX other){ return false; } public override […]

在.NET中加载Canon .CR2文件

我正在尝试使用C#处理Canon RAW .CR2文件。 我的代码如下: BitmapDecoder bmpDec = BitmapDecoder.Create(new Uri(origFile), BitmapCreateOptions.DelayCreation, BitmapCacheOption.None); BitmapEncoder bmpEnc = new BmpBitmapEncoder(); bmpEnc.Frames.Add(bmpDec.Frames[0]); Stream ms = new MemoryStream(); bmpEnc.Save(ms); Image srcImage = Bitmap.FromStream(ms); 前几行似乎毫无障碍地运行,但线路 bmEnc.Save(ms); 只是挂起而没有完成,也没有提出任何例外。 有人有这个成功吗?

解决SQL查询的超时错误

我收到此错误: 超时已过期。 操作完成之前经过的超时时间或服务器没有响应。 我知道那里已有指南帮助解决这个问题,但他们并没有为我工作。 我错过了什么或者我应该在哪里将代码添加到我的C#程序中的这些SQL语句中: String sql = project1.Properties.Resources.myQueryData; SqlDataAdapter sqlClearQuestDefects = new SqlDataAdapter(sql, “Data Source=ab;Initial Catalog=ac;User ID=ad; Password =aa”); DataSet lPlanViewData = new DataSet(); sqlClearQuestDefects.Fill(lPlanViewData, “PlanViewData”); 我在这一行收到超时错误: SqlDataAdapter sqlClearQuestDefects = new SqlDataAdapter(sql, “Data Source=ab;Initial Catalog=ac;User ID=ad; Password =aa”);

在ProtoBuf-net中序列化字典失败

(注意:字典,其中T是一些ProtoContract / ProtoMembered类工作正常。)这个问题只发生在我的类型对象上。 我试图序列化词典工作字典。 typeof(object)不起作用。 应该是? 我应该实现基于字符串的解决方案吗? 在这种情况下,对象将只是一个.net原语。 [Test] public void De_SerializeObjectDictionary2() { var d = new Dictionary(); d.Add(“abc”, 12); var ms = new MemoryStream(); var model = ProtoBuf.Meta.RuntimeTypeModel.Default; //model.AutoAddMissingTypes = true; //model.AutoCompile = true; //model.InferTagFromNameDefault = true; //model.Add(typeof (object), false); //model.Add(typeof(Int32), true); //model[typeof (object)].AddSubType(50, typeof (Int32)); model.Serialize(ms, d); Serializer.Serialize<Dictionary>(ms, d); // <— No serializer […]

C#/ .NET:检测程序是作为服务还是作为控制台应用程序运行

我有一个C#/ .NET程序,可以作为控制台应用程序和服务运行。 目前我给它一个命令行选项来启动作为控制台应用程序,但我想避免这种情况。 是否有可能以编程方式检测我的程序是否作为服务启动? 如果它是纯Win32,我可以尝试使用StartServiceCtrlDispatcher作为服务启动并返回到控制台,如果它返回ERROR_FAILED_SERVICE_CONTROLLER_CONNECT,但System.ServiceProcess.ServiceBase.Run()弹出errordialog如果它失败然后只返回没有发出错误信号到该计划。 有任何想法吗?

使用linq将数据添加到现有xml文件

我是.net初学者。 我需要向xml文件添加一些数据 xml文件是: — 1st level /* i dont want to create this because this exists */ — 2nd level Toothpaste Colgate 12 10 Toothpaste Pepsodent 20 12 我需要补充一下 productname –> Toothpaste brandname –> CloseUp quantity –> 16 price –> 15 到各自的标签。 我现在面临的问题是我需要深入两个级别才能写入各自的标签,我不知道该怎么做。 我尝试了下面的代码:( 不工作 ) XDocument doc = new XDocument( new XElement(“stock”, /* how […]