我使用log4net.Appender.AdoNetAppender appender.
我的log4net表是以下字段[Date],[Thread],[Level],[Logger],[Message],[Exception]
我需要在log4net表中添加另一个字段(例如SalesId),但是如何在我的xml和代码中指定在记录错误或信息消息时记录"SalesId"?
例如 log.Info("SomeMessage", SalesId)
这是log4net xml
<appender name="SalesDBAppender" type="log4net.Appender.AdoNetAppender">
<bufferSize value="1" />
<connectionType value ="System.Data.SqlClient.SqlConnection" />
<connectionString value="Data Source=..." />
<commandText value="INSERT INTO Log4Net ([Date],[Thread],[Level],[Logger],[Message],[Exception]) VALUES (@log_date, @thread, @log_level, @logger, @message, @exception)" />
<parameter>
<parameterName value="@log_date" />
<dbType value="DateTime" />
<layout type="log4net.Layout.RawTimeStampLayout" />
</parameter>
<parameter>
<parameterName value="@thread" />
<dbType value="String" />
<size value="255" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%thread" />
</layout>
</parameter>
<parameter>
<parameterName value="@log_level" />
<dbType value="String" />
<size value="50" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%level" /> …Run Code Online (Sandbox Code Playgroud) 有没有更好的方法来执行以下操作:
我需要在继续循环之前检查file.Headers上的null
if (file.Headers != null)
{
foreach (var h in file.Headers)
{
//set lots of properties & some other stuff
}
}
Run Code Online (Sandbox Code Playgroud)
简而言之,由于我的代码中发生缩进的程度,因此将foreach写入if中看起来有点难看.
是值得评价的东西
foreach(var h in (file.Headers != null))
{
//do stuff
}
Run Code Online (Sandbox Code Playgroud)
可能?
我正在使用visual studio 2013.我工作的公司已经更改了域名(例如从abc.com到ayebecee.com),这显然意味着必须创建新的登录配置文件等.现在我启动了visual studio但是所有我安装的插件和设置都"消失了".基本上我需要知道存储设置和插件的位置,以便我可以将它们复制到我的新Windows配置文件中.
我在一本关于WCF的书中遇到过这一行:
...用于编写COM组件的语言(例如C++和Visual Basic)最好是面向对象的,但不是面向组件的......
两者有什么区别?
可能重复:
依赖注入与工厂模式
有人可以解释(简单例子)工厂模式和反转控制模式之间的区别.最好使用.NET2.0
我有以下内容:
ViewBag.SomeEnumerable = new List<string>() { "string1", "string2" };
Run Code Online (Sandbox Code Playgroud)
现在我如何在JavaScript端分配ViewBag.SomeEnumerable一个array或某种形式的可枚举对象?例如:
function SomeFunction()
{
var array = @ViewBag.SomeEnumerable;
for(var eachItem in array)
{
alert(eachItem); // should display "string1" then string2"
}
}
Run Code Online (Sandbox Code Playgroud) 让我们说我们有一个代表
public delegate void MyEventHandler(string x);
Run Code Online (Sandbox Code Playgroud)
和一个事件处理程序
public event MyEventHandler Something;
Run Code Online (Sandbox Code Playgroud)
我们添加了多个事件..
for(int x = 0; x <10; x++)
{
this.Something += HandleSomething;
}
Run Code Online (Sandbox Code Playgroud)
我的问题是..如何从事件处理程序中删除所有方法,假设一个人不知道它已被添加10(或更多或更少)次?
我在编译时遇到以下错误.如何解决它而不必使用不同的函数名称
private double SomeMethodName(SomeClassType value)
{
return 0.0;
}
private double SomeMethodName(ADifferentClassType value)
{
if (value == null)
{
return this.SomeMethodName(null); //<- error
}
return this.SomeMethodName(new SomeClassType());
}
Run Code Online (Sandbox Code Playgroud) 我有以下功能定义
private void DoExport(Action<ColumnView, bool> UpdateColumns)
{
...
}
private void UpdateNonPrintableColumns(ColumnView view, bool visible)
{
...
}
Run Code Online (Sandbox Code Playgroud)
被调用的示例:
DoExport(UpdateNonPrintableColumns);
Run Code Online (Sandbox Code Playgroud)
我的问题是.如何传递'null'动作?它甚至可能吗?
例如
DoExport(null); <- Throws exception
在函数体中调用操作时,DoExport(null)会引发异常
正如问题的主题所问,2是同一件事吗?它们可以互换吗?如果没有,请通过示例解释差异或提供说明.