我知道对于多部分写入,我应该在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方法(唯一目的是抛出异常的方法)而不是直接抛出应该产生更小的字节码。这和明显的封装(另一层间接)可能是不
如果我定义了一个接口(interface)ITestInterface,然后立即创建一个实现该接口(interface)的类以供在应用程序中使用,是可以将类和接口(interface)保留在同一个命名空间中,还是应该将它们分开。即Test.Interfaces和Test.Interfaces.Implementation。我的界面及其实现都将在其自己的程序集中,因此我不打算创建另一个界面来包含界面本身。这与c#特别相关,但我想它可以涵盖任何语言。 最佳答案 最好使用.NET预定义类的既定约定。例如,查看System.Collecti
我有一个Controller,可以根据用户类型加载一些下拉菜单。例如:publicActionResultIndex(){switch(SessionHelper.ViewLimit){case"C":ViewData["CustDivision"]=LoadCustDivisions();ViewData["Customer"]=LoadCustomers();break;case"P":ViewData["Customer"]=LoadCustomers();ViewData["Employee"]=LoadEmployees();break;case"D":ViewData["C
System.Threading.Timer的文档说我应该为它保留一个实时引用以避免它被垃圾收集。但是我应该在哪里做呢?我的main非常简单,我不知道在哪里保存引用:classProgram{staticvoidMain(){newSystem.Threading.Thread(myThreadStart).Start();newSystem.Threading.Timer(myTimerCallback,newMyStateObject(),0,5000);}}我考虑将引用保留在Program类的static字段中,假设static字段直到最后才被收集的应用程序。但我不确定这是最好的
我知道它不会抛出异常,因此它可能会明显更快,而且,您很可能使用它来将输入转换为您可以使用的数据,所以我认为它没有被这样使用通常会在性能方面产生如此大的差异。无论如何,我看到的例子都是if/elseblock和TryParse的行,else返回错误消息。对我来说,这与使用try/catchblock和catch返回错误消息基本相同。那么,我是不是漏掉了什么?在某些情况下这实际上有用吗? 最佳答案 除了您自己提到的性能方面外,还有语义差异:使用try/catch是为了应对特殊情况。输入无效数据是您所期望的,而不是异常(exception