在一次代码审查中,一位同事更改了我的代码以将Stream作为参数传递。他说这是为了确保调用者清楚处置对象的责任。从某种意义上说,我可以同情。我希望对象创建者也负责清理。另一方面,这两种方法都使using的必要性变得更加清晰。我也更喜欢更简单的方法调用。拿publicstaticTextReaderSerialize(Tobj)whereT:new(){if(obj==null)thrownewArgumentNullException("obj");returnSerialize(obj,null);}对比publicstaticvoidSerialize(Tobj,TextWrite
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭9年前。我和我们公司的teamlead\architect就这个话题进行了讨论。他认为,如果将“按逻辑连接的实体”放在一个cs文件中,则更容易理解大型项目。我引用:“逻辑和接口(interface)和类的整个结构可以在一个地方看到,这是一个无法反驳的论点。看到同样的东西但是一堆您需要使用工具、类图、用于导航的R#等的文件。”“根据糟糕的理论,我可能会尖叫说一大群分
我在C#中有一个Address类,如下所示:publicclassAddress{publicstringStreetAddress{get;set;}publicstringRuralRoute{get;set;}publicstringCity{get;set;}publicstringProvince{get;set;}publicstringCountry{get;set;}publicstringPostalCode{get;set;}}我正在实现相等性,因此我需要覆盖哈希码。起初我打算使用EJ的哈希码公式,但后来我想:这些都是字符串字段,我不能只使用StringBuilde
我有一个将目录路径作为字符串的方法。在该方法的开头,它检查此路径是否存在,如果不存在,则应抛出异常。我认为它可能应该抛出DirectoryNotFoundException或其他东西,而不是不太具体的ArgumentException。我阅读了那个DirectoryNotFoundException的msdn文档,它是这样说的DirectoryNotFoundExceptionusestheHRESULTCOR_E_DIRECTORYNOTFOUNDwhichhasthevalue0x80070003.我不知道这到底是什么意思,它看起来有点吓人……我应该仍然抛出那个异常,还是应该坚持使
我知道对于多部分写入,我应该在nhibernate中使用事务。但是对于简单的读写(1部分)呢……我读到始终使用事务是一种很好的做法。这是必需的吗?我应该做以下简单阅读吗?或者我可以将交易部分全部放在一起吗?publicPrinterJobRetrievePrinterJobById(Guidid){using(ISessionsession=sessionFactory.OpenSession()){using(ITransactiontransaction=session.BeginTransaction()){varprinterJob2=(PrinterJob)session.G
从ServiceBase派生时,是否也应该调用基类的方法?protectedoverridevoidOnStart(string[]args){////ThestuffIdowhentheservicestarts.//base.OnStart(args);//DoIneedtocallthis?} 最佳答案 简短的回答是肯定的,你应该。在这种特定情况下,OnStart方法的基本实现不会做任何重要的事情,但这是一个可能随时更改的实现细节。作为一般做法,您应该始终调用基方法,除非您有充分的理由不这样做。
假设我有一个View。它的DataContext绑定(bind)到ViewModel并且ViewModel公开了一个Model属性。MVVM是否喜欢将View中的字段绑定(bind)到Model中的属性(例如BindingPath=Model.FirstName)?Model是否应该实现INotifyPropertyChanged?我的团队在WPF中使用Prism和MVVM。许多Prism示例间接绑定(bind)到Model。我个人怀疑这是正确的方法。我认为模型中的内容应该公开行为(不仅仅是在属性级别)并且应该通过,呃,events来传达重要事件-客户可以订阅或不订阅.我认为通过让域/
这是一个相当基本的问题,但我仍在努力解决这个问题。IDisposable被实现,当你想让一个对象的用户在对象最终被垃圾收集之前释放底层资源(例如套接字等)。当我有一个包含DbConnection(实现IDisposable)的类时,我的类是否也需要实现IDisposable并链接调用到DbConnection或它拥有的任何其他IDisposable对象?否则,DbConnections资源只会在我的类被垃圾回收时释放,从而丢弃它对连接的引用,GC将最终确定DbConnection。 最佳答案 是的,如果您控制一次性对象,您总是实现I
我见过各种事件处理的例子。这是一个:EventSample.有时我看到委托(delegate)在将引发事件的类外部声明(如上面的链接所示),有时在内部(我认为它应该被声明)。对我来说,在将引发事件的类中声明事件更有意义。原因是该类将声明的事件实际上只是辅助方法等的一些糖衣,它们实际上是在对委托(delegate)进行添加、减去和调用等操作。有什么最佳实践吗?是否有时您想在外部声明委托(delegate),而有时又想在内部声明委托(delegate)?如果是这样,应该如何决定要做什么? 最佳答案 通常,现在您会创建自己的派生自Even
什么时候使用ThrowHelper方法而不是直接抛出是合适的?voidMyMethod(){...//thrownewArgumentNullException("paramName");ThrowArgumentNullException("paramName");...}voidThrowArgumentNullException(stringparamName){thrownewArgumentNullException(paramName);}我读到调用ThrowHelper方法(唯一目的是抛出异常的方法)而不是直接抛出应该产生更小的字节码。这和明显的封装(另一层间接)可能是不