小编vdh*_*ant的帖子

记录时人员捕获的字段 - log4net

我有兴趣知道人们在使用log4net等记录器时在应用程序中登录时实际捕获和使用的字段.

这可以从调试到测试再到生产,也可以用于胖客户端应用程序,但我更多地考虑Web应用程序的语义(即asp.net).

此外,在web(以及在某种程度上对于胖客户端)的上下文中,我感兴趣的是人们如何为给定请求构建日志的层次结构以及如何识别单个请求等.

干杯安东尼

以下是我到目前为止所用的内容:

LOGID,服务器名称,服务器IP,ApplicationAbbrv,ApplicationVersion,ApplicationAppDomain,LogDateTime,LOGTIMESTAMP,LogLogger,CODETYPE,CodeClass,的CodeFile,CodeLocation,CodeMethod,代码行,CodeStackPosition,的LogMessage,LogException,LogEntityOrigin,ContextSessionId,ContextUserName,ContextThread,ContextObjectPropertyData,ContextMachineId,ContextMachineIP

.net asp.net logging log4net

5
推荐指数
1
解决办法
364
查看次数

"显式接口实现的约束......"

我无法弄清楚为什么以下不会工作,任何想法?公共接口IFieldSimpleItem {}

public interface IFieldNormalItem : IFieldSimpleItem
{ }

public class Person
{
    public virtual T Create<T>()
        where T : IFieldSimpleItem
    {
        return default(T);
    }
}

public class Bose : Person
{
    public override T Create<T>()
        where T : IFieldNormalItem //This is where the error is
    {
        return default(T);
    } 
}
Run Code Online (Sandbox Code Playgroud)

我这样做的原因是,如果开发人员继承自Bose,Bose依赖于创建至少为IFieldNormalItem的实例.以下仅依赖于IFieldSimpleItem,但上述内容应强制它至少为IFieldNormalItem.

public class Person
{
    public virtual IFieldSimpleItem Create() 
    {
        return null;
    }
}

public class Bose : Person
{
    public override IFieldSimpleItem Create()  
    {
        return null;
    } 
} …
Run Code Online (Sandbox Code Playgroud)

.net c# generics

5
推荐指数
0
解决办法
3688
查看次数

单元测试,Linq to SQL和解决数据上下文

我一直在研究以下内容,看起来使用编译查询可以获得很多好处... http://blogs.msdn.com/ricom/archive/2008/01/14/performance-quiz- 13 LINQ到SQL编译查询成本,solution.aspx

我的问题是我想对我的查询进行单元测试,但是编译的查询需要一个派生自DataContext的类的具体实例(特别难以模拟出来)...因此我提出了以下代码,我是想知道是否有人知道我是否仍然可以获得编译查询的性能优势......

private static readonly Func<IDatabase, IActionParameters, ISportProgramMapper, IQueryable<ISportProgram>> _GetQueryUnCompiled =
    (db, parameters, mapper) => from x in db.SportProgramDataSource.ThatHaveActiveSports()
                                where x.SportProgramId == parameters.Id
                                select mapper.FromDataToEntity(x);

private static readonly Func<Database, IActionParameters, ISportProgramMapper, IQueryable<ISportProgram>> _GetQuery = CompiledQuery.Compile<Database, int, ISportProgramMapper, IQueryable<ISportProgram>>((db, parameters, mapper) => _GetQueryUnCompiled(db, parameters, mapper));

public IActionResult<ISportProgram> Get(IActionParameters parameters)
{
    Check.Argument("parameters").ThatValue(parameters).IsNotNull();

    IDatabase db = this.CreateDatabase(); 
    ISportProgramMapper mapper = this.CreateMapper<ISportProgramMapper>();
    Database typedDb = db as Database;

    var result = typedDb != null ? _GetQuery(typedDb, parameters, mapper).FirstOrDefault() : _GetQueryUnCompiled(db, parameters, …
Run Code Online (Sandbox Code Playgroud)

c# datacontext unit-testing mocking linq-to-sql

5
推荐指数
1
解决办法
1281
查看次数

Javascript标记替换/追加

我有一个类似于以下'test:1; hello:five; just:23'的字符串.有了这个字符串,我需要能够做到以下几点.

....
var test = MergeTokens('test:1;hello:five;just:23', 'yes:23;test:567');
...
Run Code Online (Sandbox Code Playgroud)

最终结果应为'test:567; hello:five; just:23; yes:23'(注意令牌的确切顺序并不重要).

只是想知道是否有人对如何解决这个问题有任何明智的想法.我正在考虑在右边的每个令牌上使用正则表达式替换,如果由于没有匹配而没有发生替换只是附加它.但也许有更好的方法.

干杯安东尼

编辑:右侧应覆盖左侧.左边是原来的,右边是新内容.另一种看待它的方法是,如果右侧不存在令牌,则只保留左侧的令牌,并将所有令牌保持在右侧.

@Ferdinand 感谢您的回复.问题是您提出的解决方案的效率.我最初考虑类似的行,但由于合并的O(n*z)复杂性而打折扣(其中n和z分别是左右分别的数字标记),更不用说拆分和连接了.

因此,为什么我试图俯视正则表达式的路径.也许在幕后,正则表达式同样糟糕或更糟,但有一个正则表达式从右侧存在的左侧字符串中删除任何标记(右侧令牌总数为O(n))然后只需添加2个字符串在一起(即增值测试= test1 + test2)似乎更有效.谢谢

javascript regex merge replace token

1
推荐指数
1
解决办法
2873
查看次数