小编sna*_*nap的帖子

.NET日志框架设计

我们将log4net用于当前的应用程序日志记录,但我不喜欢我们的日志框架是围绕它构建的.例如,它目前只有一个故障点,如果由于某种原因它无法连接到日志记录服务器,那么就不会记录日志.我想将它构建为一个灵活但简单的框架,允许我指定一个或多个"备份"appender,以便在主要服务器出现故障时使用(例如,如果日志记录服务器已关闭,则写入文件)代替).

你有没有偶然发现你喜欢的这样的东西,发现写得很好?我不介意自己动手​​,但我很擅长不重新发明轮子

谢谢

.net logging log4net

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

具有基本实体类的实体框架

我们的团队正致力于在广泛的现有数据库模式上实现代码优先的EF框架.我们真正希望拥有的一个基础接口是我们所有不同实体都将实现的.我们打算在这个基本接口中定义的所有内容都是Id字段和Name字段,因为我们所有的数据库表都具有这两个属性的概念.这种方法有很多好处,因为在我们的应用程序中有很多情况,你需要的一个对象是它的Id和一些描述性文本(它的'Name')所以能够编程到接口而不是实现可以提供相当多的灵活性.

问题出现了,因为并非我们架构中的所有表都有基于整数的PK,有些表有字符串,guid等.所以我们无法为接口中的Id字段定义真正的"类型",而不是可以容纳的对象所有的可能性.然后问题变成EF不喜欢对象作为其PK的想法,所以当尝试指定HasKey(o => o.Id)时它会抱怨.

无论如何,你们有没有想过要完成我们想要在这里完成的工作?谢谢!

c# entity-framework

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

返回Stream的方法是如何实现的?

.NET框架中充满了一些示例,其中方法调用将返回一个Stream,然后您可以根据需要读取和实现该流.但这如何在幕后工作?什么支持流?

假设我正在编写一个解析器,它接受一些输入并将一些数据解析为预定义的格式.例如,如果我创建一个MemoryStream,然后使用一个StreamWriter写我的内容,然后有方法返回的流,我会碰到的问题,因为它完成时笔者将关闭底层流和呼叫者将无法按预期阅读.

这通常是如何管理的?流的内容是否在需要之前存储在对象中(如a byte[]),然后在调用请求Stream的方法时,它会在那时创建它还是什么?

.net c# stream

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

在Castle Windsor中注册相同界面的多个实现

假设我的组件当前对我的接口有一个依赖关系,ICache并使用构造函数注入在基于DB的Cache实现中注册.像这样的东西:

container.Register(Component.For<ICache>()
                            .ImplementedBy<DatabaseCache>()
                            .LifeStyle.Singleton
                            .Named("dbcache"));
Run Code Online (Sandbox Code Playgroud)

然后我的组件注册它:

container.Register(Component.For<IRepository>()
                            .ImplementedBy<CoolRepository>()
                            .LifeStyle.Singleton
                            .Named("repo")
                            .DependsOn(Dependency.OnComponent(typeof(ICache), "dbcache")));
Run Code Online (Sandbox Code Playgroud)

但是如果我希望我的组件能够同时使用ICache不同类型的第二个依赖项呢?如何将2个不同的同一接口实现注入主组件?

c# dependency-injection castle-windsor

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

Scala不可变集是可变的吗?

文档说:

保证scala.collection.immutable包中的集合对每个人都是不可变的。这样的集合在创建后将永远不会改变

但是我没有得到我期望的行为:

scala> var test3 = scala.collection.immutable.Set[String]("one", "two")
test3: scala.collection.immutable.Set[String] = Set(one, two)

scala> test3 += "three"

scala> println(test3)
Set(one, two, three)
Run Code Online (Sandbox Code Playgroud)

我在这里想念什么?

scala set immutable-collections

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