我们将log4net用于当前的应用程序日志记录,但我不喜欢我们的日志框架是围绕它构建的.例如,它目前只有一个故障点,如果由于某种原因它无法连接到日志记录服务器,那么就不会记录日志.我想将它构建为一个灵活但简单的框架,允许我指定一个或多个"备份"appender,以便在主要服务器出现故障时使用(例如,如果日志记录服务器已关闭,则写入文件)代替).
你有没有偶然发现你喜欢的这样的东西,发现写得很好?我不介意自己动手,但我很擅长不重新发明轮子
谢谢
我们的团队正致力于在广泛的现有数据库模式上实现代码优先的EF框架.我们真正希望拥有的一个基础接口是我们所有不同实体都将实现的.我们打算在这个基本接口中定义的所有内容都是Id字段和Name字段,因为我们所有的数据库表都具有这两个属性的概念.这种方法有很多好处,因为在我们的应用程序中有很多情况,你需要的一个对象是它的Id和一些描述性文本(它的'Name')所以能够编程到接口而不是实现可以提供相当多的灵活性.
问题出现了,因为并非我们架构中的所有表都有基于整数的PK,有些表有字符串,guid等.所以我们无法为接口中的Id字段定义真正的"类型",而不是可以容纳的对象所有的可能性.然后问题变成EF不喜欢对象作为其PK的想法,所以当尝试指定HasKey(o => o.Id)时它会抱怨.
无论如何,你们有没有想过要完成我们想要在这里完成的工作?谢谢!
.NET框架中充满了一些示例,其中方法调用将返回一个Stream,然后您可以根据需要读取和实现该流.但这如何在幕后工作?什么支持流?
假设我正在编写一个解析器,它接受一些输入并将一些数据解析为预定义的格式.例如,如果我创建一个MemoryStream,然后使用一个StreamWriter写我的内容,然后有方法返回的流,我会碰到的问题,因为它完成时笔者将关闭底层流和呼叫者将无法按预期阅读.
这通常是如何管理的?流的内容是否在需要之前存储在对象中(如a byte[]
),然后在调用请求Stream的方法时,它会在那时创建它还是什么?
假设我的组件当前对我的接口有一个依赖关系,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个不同的同一接口实现注入主组件?
文档说:
保证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)
我在这里想念什么?