草庐IT

NAT模式

全部标签

c# - 如何持久化实现状态模式的对象?

我是状态设计模式的新手,我找不到将对象的不同状态保存到数据库(在我的例子中是SQLServer)的合适示例。该场景与以下文章中描述的示例非常相似[几乎相同],但是我还没有找到将状态持久保存到数据库的适用解决方案。你们能推荐一个链接或举个例子吗?StatePatternUsageandSampleinC#此外:如何在运行时枚举所有不同的ConcreteState类型?例如,如果您有10个不同的状态,您是声明一个具有10个不同成员的EnumStates并为每个ConcreteState成员提供一个关联的EnumStates成员,还是通过获取ConcreteState的子类来获取所有不同的状

C#,模式 - 许多条件

我正在为我的问题寻找一个好的模式。我有一些bool变量:条件1、条件2、条件3。我还有一些Action,在类中的不同地方调用:Action1,Action2,Action3当条件1和2为真时调用Action1。当条件2和3为真时调用action2。当所有条件都为真时,将调用操作3。当然这只是问题的简化。我不想在每个地方都使用ifelse。这是非常不清楚的。我一直在考虑状态,但我想这不是解决这个问题的最佳方案。 最佳答案 一种选择是将条件逻辑包装在基类中,然后从中派生以执行实际操作。这是Command的变体模式和(我认为)Strate

c# - 哪种设计模式用于过滤查询? C#

我有一个包含产品(服装)列表的数据库表。产品属于类别,来自不同的商店。示例类别:上衣、下装、鞋子示例商店:gap.com、macys.com、target.com我的客户可以通过以下方式请求过滤产品:所有产品(无过滤器)按类别按商店按类别和商店现在我的“产品”类中有一个方法可以根据用户请求的过滤器类型返回产品。我使用FilterBy枚举来确定需要退回哪些产品。例如,如果用户想查看“tops”类别中的所有产品,我调用此函数:Products.GetProducts(FilterBy.Category,"tops","");我将最后一个参数设为空,因为它是包含筛选依据的“商店”的字符串,但

c# - 有人想过以这种方式使用黑板模式吗?

有没有人对“ThePragmaticProgrammer”第165页中的Blackboard概念有任何想法?我想拥有几个相互独立的小子系统(DLL和EXE)。有一些程序集将被所有EXE使用。这些程序集几乎都使用相同的数据库。与其使用接口(interface)在这些程序集之间进行通信,不如使用Blackboard类型模式提供更多的独立性?我正在考虑一些中介类型的构造,它通过事件进行通知并且所有子系统通信都通过它。这使syb系统保持非常独立。调解器将保存它应该广播的所有通知的名称。然后,订阅者将通过名称收听特定事件,但始终订阅相同的(或者可能将名称作为参数传递)中介事件。这里有一些关于它的

c# - 基于模式为 XML 文件创建 WPF 编辑器

这是场景。我们为我们的服务器产品之一使用大型XML配置文件。该文件布局合理,并针对XSD文件进行了验证。现在是时候构建一个配置GUI来维护这个文件了,我想深入研究WPF来完成它。我可以为每个配置部分设计一个单独的表格,每次我们向配置文件添加一个选项时重构和重新分发,但我希望有一个更聪明的方法来做到这一点。因为我已经有一个强类型的xml/xsd组合,我希望有一个优雅的方法来构建一个UI来足够容易地编辑它。我知道我可以编写一个xml->xaml转换,但我希望已经有一些东西可以帮我完成繁重的工作了吗?提前致谢.. 最佳答案 我会怎么做:我

c# - 扩展方法 - 装饰者模式

我想知道我们是否可以将扩展方法视为C#中装饰器模式的实现?因为目标是一样的,但是实现的逻辑和概念可能不同?谢谢! 最佳答案 装饰器模式通常与独立于其他实例向类型的特定实例添加行为相关联。在扩展方法的情况下,它会影响在同一范围内编译的类型的所有实例。我认为它不是装饰器模式的一部分。 关于c#-扩展方法-装饰者模式,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/15211385/

c# - 使用 TPL 实现经典异步模式

我正在尝试为WF4实现自定义TrackingParticipant。我可以编写Track方法,但我的实现会很慢。如何使用.NET4.0的任务并行库(TPL)实现Begin/EndTrack覆盖?我看过TPLandTraditional.NETAsynchronousProgramming但我不确定如何在这里应用它。请注意,TrackingParticipant是.NET的一部分,并且具有使用虚拟方法预定义的经典异步模式。publicclassMyTrackingParticipant:TrackingParticipant{protectedoverrideIAsyncResultBe

c# - 在 64 位机器上以 32 位模式运行 Oracle Client

我刚刚从32位Windows7台式机转移到64位Windows7笔记本电脑。我们有一个正在开发的C#程序,该程序在解决方案中包含大约60个项目。我在尝试构建时不断收到以下错误:AttempttoloadOracleclientlibrariesthrewBadImageFormatException.Thisproblemwilloccurwhenrunningin64bitmodewiththe32bitOracleclientcomponentsinstalled显然这个错误很容易解释,我正在尝试让我的整个解决方案以32位模式加载。我已经完成了每个项目并将目标平台设置为x86,但我

c# - 即使 DebugType=full,也无法在 Release模式下调试应用程序

我们正在为Release构建解决方案,但是当尝试使用studio2010professional进行附加时,没有线程显示任何堆栈信息,也无法设置任何断点等。目标是能够将VisualStudio/JIT调试器附加到正在运行的进程,同时获得尽可能多的优化优势。我们的大多数搜索都归结为“使用debug:full编译”,您将能够进行调试,但情况似乎并非如此,我认为JIT会在运行时优化代码,因此我们不能调试,这是真的吗?是否可以编译并告诉JIT淡化优化并允许调试?(同时保留其他优化)更新使用@HansPassant的回答,我查看了模块,发现尽管pdb与二进制文件位于同一目录中,但确实没有加载任何

c# - WPF DotNET 应用程序将在 Debug模式下运行,但 .EXE 将不会运行

我使用VS2010在C#中编写了一个WPF应用程序。该应用程序可以使用VisualStudio在Debug模式下正常运行,但是当我从bin\release文件夹运行.EXE时,没有任何反应。我没有从Windows收到任何错误消息,VS中也没有错误或警告。我曾尝试构建、重建和清理解决方案(以各种可能的顺序),但没有成功。我的解决方案包含2个项目,它们都使用.NET4.0框架,我的PC上安装了.NET4.0。我在XP和Win7上都试过了,但仍然没有。我还刚刚注意到,当我在Debug模式下运行应用程序时,Debug的输出显示:在加载每个.Dll后“无法找到或打开PDB文件”。我每次都编译到R