Tag: 设计

如何初始化自定义HTTP上下文或HttpContextBase

我正在尝试创建自己的自定义HTTP上下文: CustomHttpContext : HttpContextBase { public override HttpRequestBase Request { } } 我无法弄清楚的一件事是如何初始化基类 System.Web.HttpContext.Current 有没有人有任何想法我如何首先使用Current Http初始化自定义上下文然后覆盖某些方法/属性以满足我自己的目的?

基类与实用类

应该首选哪两个? 有一些方法被A,B和C类调用。 这些方法是否应该封装在D类(A,B和C的基础)中? 要么 如果这些方法被封装在类U和其他类创建中,则它的对象是根据需要使用这些方法。 在什么基础上应该做出决定? 谢谢。

为什么我会在NHibernate会话之上使用工作单元模式?

我什么时候会在NHibernate已经提供的东西上编写UoW实现? 有真实世界的例子吗?

方法重载 – 好的还是坏的设计?

我喜欢重载方法来支持越来越多的默认情况。 方法重载对性能的影响是什么? 根据您的经验,是否建议使用重载方法? 限制是多少? 解决方法有哪些?

使用适配器模式包装系统对象(File,ServiceController等)与unit testing绕行有什么好处?

请考虑以下停止服务的方法: Public Function StopService(ByVal serviceName As String, ByVal timeoutMilliseconds As Double) As Boolean Try Dim service As New ServiceController(serviceName) Dim timeout As TimeSpan = TimeSpan.FromMilliseconds(timeoutMilliseconds) service.[Stop]() If timeoutMilliseconds <= 0 Then service.WaitForStatus(ServiceControllerStatus.Stopped) Else service.WaitForStatus(ServiceControllerStatus.Stopped, timeout) End If Return service.Status = ServiceControllerStatus.Stopped Catch ex As Win32Exception 'error occured when accessing a system API' Return False Catch […]

你应该抓住所有例外吗?

这不是’如何抓住所有例外’而是’你应该抓住所有例外’吗? 在C#.NET中,我注意到了大量的exception。 是否可以计划捕获每个例外? 例如, DirectoryInfo()构造函数抛出4个exception。 我应该计划捕捉这些还是只抓住我能处理的那些? 也许让其他人冒泡到Main() ,然后我有一个捕获所有,然后告诉用户有一个未捕获的exception。 在所有这些可能的例外情况下,您的代码可能会变得比实际代码更多的exception处理。

如何自定义InitializeComponent的代码生成? 更具体地说,如何对所有生成的代码进行后处理?

我正在尝试为InitializeComponent自定义Windows窗体设计器的代码生成。 MSDN文章“在.NET Framework视觉设计器中自定义代码生成”包含“控制代码生成”部分 ,该部分解释了如何执行此操作的基础知识。 我在上面的文章中密切关注了一个例子: //using System.ComponentModel.Design.Serialization; class SomeFormSerializer : CodeDomSerializer { public override object Serialize(IDesignerSerializationManager manager, object value) { // first, let the default serializer do its work: var baseSerializer = (CodeDomSerializer)manager.GetSerializer( typeof(Form).BaseType, typeof(CodeDomSerializer)); object codeObject = baseSerializer.Serialize(manager, value); // then, modify the generated CodeDOM — add a comment as the 1st line: if […]

读取配置节的通用方法

我试图实现从配置文件中读取节的通用方法 。 配置文件可能包含“标准”部分或“自定义”部分,如下所示。 我尝试的方法如下: private string ReadAllSections() { StringBuilder configSettings = new StringBuilder(); Configuration configFile = ConfigurationManager.OpenExeConfiguration(Application.ExecutablePath); foreach (ConfigurationSection section in configFile.Sections) { configSettings.Append(section.SectionInformation.Name); configSettings.Append(Environment.NewLine); if (section.GetType() == typeof(DefaultSection)) { NameValueCollection sectionSettings = ConfigurationManager.GetSection(section.SectionInformation.Name) as NameValueCollection; if (sectionSettings != null) { foreach (string key in sectionSettings) { configSettings.Append(key); configSettings.Append(” : “); configSettings.Append(sectionSettings[key]); configSettings.Append(Environment.NewLine); } } […]

ASP.Net项目,一个大dll和我糟糕的设计决定

曾几何时,我有一个名为Intranet的.net项目。 它只是提供网页,并显示从数据库中检索的一些数据。 随着时间的推移,一个怪物已经从这个小小的.net项目中长大。 我添加了不同的仪表板和报告function,以及当时我要求的其他任何内容。 现在我有一个很大的.net项目,在一个dll中进行了太多的工作,以便有效和快速地响应管理请求。 例如,如果我需要对站点的一个逻辑区域中的某些function进行快速更改,并且我正在为网站的另一部分编写更大的function,那么我会被我的intranet.dll困住没有编译。 我知道我可以分支我的源代码控制,但我想做的是有多个dll。 我希望每个逻辑function区域都有一个。 我怎样才能做到这一点? 它是创建每个项目和复制代码的手动过程吗? 我想整个事情只有一个web.config。 我还希望能够使用相同的成员资格提供程序处理所有项目。 我需要在Web服务器上做出哪些考虑? 关于别人如何处理这类事情的任何建议都会非常有帮助。 感谢大家。

软件设计问题:循环依赖

我遇到了一个小小的设计问题。 以下情况 库接口 包含每个模型类的接口(仅限getter和setter) Libray Businnes Logic 包含接口库和DAL的实现。 使用接口和传输器库 Library Transporter :包含用于消息传递第三方Web服务的类。 此外,我想在需要时添加第三方库的引用或Web引用。 使用接口库。 到目前为止太好了。 现在没有循环依赖。 只要需要调用Web服务,业务逻辑库就会使用“transporter”库来调用extern方法。 这非常有效。 但现在我需要创建一个Web服务,第三方应该能够在我们这边创建业务对象。 我想创建一个“转换库”,其中bussines对象转换为外部webservies的消息对象,反之亦然。 我认为这是我当前架构的问题。 如果我想创建这个库,我会得到循环依赖。 原因是 转运蛋白引用变换 转换库引用BL BL引用转运蛋白 我希望我能很好地解释我的情况。 感谢您解决这个问题的每一个想法。