草庐IT

c# - 为 "character"设计一种干净/灵活的方式来在角色扮演游戏中施放不同的法术

关闭。这个问题需要更多focused.它目前不接受答案。想改进这个问题吗?更新问题,使其只关注一个问题editingthispost.关闭3年前。Improvethisquestion我正在制作一款角色扮演游戏,既是为了好玩,也是一种学习体验。我正处于我的角色(巫师)施法的阶段。我正在使用策略模式来设置他们在施放法术之前要施放的法术。我采用这种方法的原因是因为我希望以后能够添加不同的法术类型,而不必弄乱角色/向导类。我的问题-这是一个糟糕的设计吗?是否有更好/更清洁/更简单的方法?我正在努力避免成为试图让一切都符合设计模式的“那个人”。但在这种情况下,我觉得它很合适。到目前为止,这是我

c# - 有没有一种工具可以通过包装成员字段或属性来实现接口(interface)?

我发现自己经常做以下事情,以至于我觉得必须有一个自动化的解决方案:我有一个包装器类,比如ListWrapper,它包装了一个IList:publicclassListWrapper:IList{privateIList_list;//...ImplementIListbyredirectingeverycallto_list}是否有任何工具可以自动生成此实现? 最佳答案 使用ReSharper,在类中点击“alt-insert”,然后选择“delegatingmembers”。 关于c#

c# - (如何)是否可以绑定(bind)/重新绑定(bind)一个方法来与不同签名的委托(delegate)一起工作?

我是一名C++开发人员,在C++中使用过信号和槽,这对我来说似乎类似于C#中的委托(delegate)。我发现自己在寻找“绑定(bind)”提供的功能时不知所措,觉得我一定遗漏了一些东西。我觉得像下面这样的东西,在c++中是可能的,在带有委托(delegate)的c#中应该是可能的。这是我在C++中所做的一些伪代码:SlotsomeCallback;intfoo(inti){std::coutsomeCallback=bind(fun_ptr(foo),i);++i;//addedtoshowthatlateevaluationwouldbeanon-trivialdifference

c# - 在 C# 或 PowerShell 中是否有一种相对直接的方法来完成 CD 或 DVD?

首先,对术语进行一些澄清。完成,我并不是说结束session;我的意思是在CD或DVD上以这样一种方式写入导出,即无法再通过通常的方式(Roxio、Nero、WindowsExplorer等)向其中添加信息我对此进行了大量研究。有一些开源程序,例如InfraRecorder我们可以从中得到一些启发,但它们似乎都涉及使用IMAPI的相当复杂的C++代码,这似乎是一种非常低级的做事方式。我们团队中的开发人员都没有C++或IMAPI专业知识来支持这样的代码库。互联网上最有前途的资源似乎是thisone,但它似乎不包含最终确定功能。这是“写入图像”的代码:publicvoidWriteImag

c# - masterpage initializeculture 找不到合适的方法来覆盖错误?

我正在尝试使用ASP.NET和C#开发多语言网站我的问题是:我想让我的MasterPage支持在语言之间切换,但是当我将“InitializeCulture()”放入masterpage.cs时,我收到了这个错误。这是我的代码:publicpartialclassBasicMasterPage:System.Web.UI.MasterPage{protectedvoidPage_Load(objectsender,EventArgse){}protectedvoidCalendar1_DayRender(objectsender,DayRenderEventArgse){if(e.Da

c# - 有没有比 String.Replace 更好的方法来从字符串中删除退格符?

我有一个从另一个来源读取的字符串,例如“\b\bfoo\bx”。在这种情况下,它将转换为单词“fox”,因为前2个\b被忽略,最后一个“o”被删除,然后被“x”替换。另外一种情况是“patt\b\b\b\b\b\b\b\b\b\bfoo”应该被翻译成“foo”我想出了一些使用String.Replace的方法,但它很复杂,我担心它不能正常工作,而且它会创建很多我想避免的新字符串对象。有什么想法吗? 最佳答案 可能最简单的方法就是遍历整个字符串。根据您的输入,以下代码可以在1-pass中完成此操作publicstringReplace

c# - 为什么在 C# 中需要分部方法?可以使用事件来实现相同的目标吗?

我正在阅读“ApressProLINQ:C#中的语言集成查询”这本书,我遇到了部分方法,但我真的不明白它们有什么需要。我觉得书上的例子(变化前后的属性)可以用事件来实现。那么有什么解释吗? 最佳答案 是的,您可以使用事件实现与使用分部方法类似的效果。分部方法实际上只是一种让代码生成者(主要是设计者)为非生成代码生成Hook的方法。事件可以填补这个角色。然而,部分方法相对于事件有一些优势如果没有实现,部分方法调用将完全从生成的IL中删除。这不能通过事件来完成。分部方法的设计是为了解决钩子(Hook)有1个提供者和1个消费者的问题。事件

c# - 用什么集合来存储树结构?

我想在集合中存储组织结构图。我认为树数据结构最适合我的需要,因为我需要将多个节点添加到一个节点。LinkedList仅提供将一个节点添加到另一个节点,如果我理解正确的话。我查看了C5treeset集合,但它似乎没有Add()方法可以将超过2个节点添加到一个节点。我还查看了Windows窗体库中的Treeview类,但我不想将Windows窗体dll添加到我的项目中,因为我正在构建服务层应用。(或者还好吗?)我不想编写自己的树集合类,如果第3方已经提供了一个?有什么建议吗?谢谢 最佳答案 像这样的事情可以作为一个起点。通过使用泛型,这

c# - 如何在 C# 中使用低级键盘钩子(Hook)来抑制任务切换键(winkey、alt-tab、alt-esc、ctrl-esc)

谁能告诉我如何使用C#禁用任务切换键 最佳答案 我有完整的代码来禁用Windows键,Alt+Tab等等..现在我提供以下代码供其他人引用:/*CodetoDisableWinKey,Alt+Tab,Ctrl+EscStartsHere*///Structurecontaininformationaboutlow-levelkeyboardinputevent[StructLayout(LayoutKind.Sequential)]privatestructKBDLLHOOKSTRUCT{publicKeyskey;publicin

c# - 生成动态方法来设置结构的字段而不是使用反射

假设我有以下代码更新struct的字段使用反射。由于结构实例被复制到DynamicUpdate方法,itneedstobeboxedtoanobjectbeforebeingpassed.structPerson{publicintid;}classTest{staticvoidMain(){objectperson=RuntimeHelpers.GetObjectValue(newPerson());DynamicUpdate(person);Console.WriteLine(((Person)person).id);//print10}privatestaticvoidDynam