草庐IT

方案设计

全部标签

c# - 责任链设计模式有哪些替代方案?

我正在为一个业务线应用程序构建邮件模块。情况是,当发送邮件以响应某些输入时,它们应该被分组,这样用户就不会收到几封包含不同项目的连续邮件,而只会收到一封包含所有项目的邮件。此外,邮件应按特定类型分组,这取决于创建邮件通知的输入类型,我有输入列表,每个输入都有其特定的分组类型,例如:层次结构:员工有流程有请求有事件事件1:由员工(因此接收者将在一封邮件中收到他拥有的此事件类型的所有流程通知)事件2:按流程(接收方将收到一组关于此流程和此事件类型的所有请求的所有通知)事件3:按请求(此请求的事件将分组)事件4:按事件(每个事件将在单独的邮件中发送)这个分组会不断变化。您可能会想,为了做到这

c# - 无法进入我的解决方案中的本地服务

我知道之前有人问过这个问题,但我就是想不通。我相信我已经涵盖了已经提出的所有内容,但我会涵盖这些内容。当我尝试进入一个当前在我的解决方案中的项目服务时,我收到此消息:我的解决方案中有3个项目:SuburbanCustPortal我读到我应该检查以下项目:确保调试已开启。我的两个项目的web.config中都有这个:确保他们都使用相同的.net版本。它们都在.netframework4.0上。确保未选中“仅启用您的代码”:服务指向本地url:我可以在我的浏览器中无错误地启动该服务:这是我的iis设置:我已经重新启动了visualstudio,计算机并删除了该服务并将其添加回来。我这辈子都

c# - .Net Standard 中 CompileToMethod 的替代方案

我现在正在将一些使用表达式的库移植到.NetCore应用程序并遇到一个问题,我的所有逻辑都基于LambdaExpression.CompileToMethod而它根本就没有in.这是示例代码:publicstaticMethodInfoCompileToInstanceMethod(thisLambdaExpressionexpression,TypeBuildertb,stringmethodName,MethodAttributesattributes){...varmethod=tb.DefineMethod($"__StaticProxy",MethodAttributes.P

c# - 如何使设计器可以使用复合组件?

我正在尝试编写自定义WinForms组件,我编写了几个简单的验证器组件,用于与自动连接验证事件的ErrorProvider子类一起使用。得益于IExtenderProvider,所有这些组件都可以添加到表单中并仅使用设计器进行连接。现在,在尝试更上一层楼的过程中,我正在尝试获得一个可与设计器一起使用的复合验证器。我可以启动它并使用代码,但这真的很容易。我想让它以仅限设计师的方式工作。我的困难在于公开一个属性,该属性是具有相同形式的其他验证器的集合。所有验证器都直接继承自Component,并实现了一个IControlValidator接口(interface)。如果有帮助,我愿意改变它

c# - Lazy<T> 是线程安全的惰性加载单例的良好解决方案吗?

我们在get上使用双重锁定实现了一个延迟加载的单例,以确保实例只初始化一次(而不是由于线程竞争条件而初始化两次)。我想知道是否只使用Lazy是解决这个问题的好方法吗?即.privatestaticLazy_instance=newLazy(()=>returnnewMyClass());publicstaticMyClassInstance{get{return_instance.Value;}} 最佳答案 我建议你阅读评论中的引用文章:LazyClassImplementingtheSingletonPatterninC#在所有情

c# - 关于基于类的文本冒险游戏设计的质疑。

我整个夏天都在学习C#,现在我想利用我目前所做的一切来制作一个小项目。我决定开发一种基于文本的冒险游戏。游戏的基本结构将涉及多个区域(或房间)。进入房间后,将输出描述和一些您可以采取的行动;在那个房间里检查、捡起、使用东西的能力;可能是战斗系统等。一个扇区最多可以连接4个其他扇区。无论如何,在纸上写下关于如何为此设计代码的想法,我正在摸索我的部分代码的结构。我已经决定了一个玩家类,以及一个委托(delegate)关卡/地牢/区域的“关卡”类。该级别类别将由许多相互关联的“部门”组成。在任何给定时间,玩家都会出现在关卡中的某个特定区域。所以这里是困惑:从逻辑上讲,人们会期待一种方法,例如

c# - .NET 自定义控件 (ToolStripControlHost) 对设计人员造成严重破坏

我需要在ToolStrip中有一个MaskedTextBox,默认情况下不包含它,因此我遵循了我在网上找到的一些建议,并创建了从ToolStripControlHost继承的自定义控件。当我运行应用程序时,我所创建的效果很好,但它确实让设计人员感到困惑。通过“搞砸”,我的意思是自定义控件(连同其他一些控件)从ToolStrip中消失。此外,我无法再向ToolStrip添加新控件,也无法选择ToolStrip上的现有控件来编辑它们。这是我的类(class)。[DesignerCategory("code")][ToolStripItemDesignerAvailability(ToolS

c# - 如何在 Visual Studio 2015 中为多个解决方案和项目设置单个 Nuget 包文件夹

我们正在VisualStudio2015中开发多个解决方案。这些解决方案共享一些需要nuget包的核心项目。当从一个解决方案添加nuget包并稍后由另一个解决方案打开时,无法解析nuget引用。文件夹结构如下:代码库共享项目共享项目1解决方案A网络项目A包文件夹A解决方案B网络项目B包文件夹B当我在SolutionA打开时将nuget包安装到SharedProject1时,dll引用显示了packages文件夹A的路径。当SolutionB在另一台计算机上打开时,SharedProject1出现引用错误,因为packages文件夹A不存在。我已阅读此解决方案:Settingupacom

c# - 设计 : How to inform controllers about data modification across application

在基于mvc的大型系统中,有负责编辑数据的View和显示该数据的View。示例:UserManagementView和UserSelectionView.每个子系统都应该知道自己是否需要更新数据,在另一个子系统对相同数据进行更改后,以便其Controller知道是否需要更新数据。我对此的想法有点像观察者模式(有点集成在c#中),所有Controller都将成为监听器,并最终会收到发生数据操纵的通知。BindingList例如提供ListChanged事件。同样,可以为每个数据结构创建一个接口(interface),并将更改通知Controller。这会增加开销(IMO),而且我发现这种

c# - 带有 VSIX 安装程序和 Nuget 包的 Visual Studio 2012 的多项目/解决方案模板

我想要一个将创建子项目的多项目模板,并将安装nuget依赖项以及一个将安装此模板的vsix安装程序。已经尝试过的方法有问题没有VSIX、没有nuget的多项目模板我能够创建一个多项目模板,并且工作正常,除了在包含nuget引用时,它没有工作。没有不涉及VSIX的对nuget的简单/优雅支持。带有VSIX的多项目模板,没有根模板所以我尝试使用VSIX,它看起来非常简单。添加一个模板项目作为zip或从解决方案,构建vsix安装程序。但是当我添加第二个项目模板,创建一个多项目模板,构建它,安装模板并尝试创建一个项目时,我意识到它不支持主子项目设置,其中主项目创建子项目。这是一个大问题,因为开