草庐IT

c# - 通过接口(interface)在多个集合中引用同一个对象

警告:这个问题使用类比角色扮演游戏作为例子。假设我正在使用C#制作我梦寐以求的角色扮演游戏。当玩家进入战斗时,会出现某种战场,其中包含与战斗相关的每个元素的引用,例如战场上的各种对手和可用元素。现在所有这些元素都有一个但几个角色:例如,盟友(通过直接继承成为战士)能够在战场上移动、发出命令或成为敌人的目标。现在那把巨大的石中剑在战斗中也有一些作用。显然它不能移动也不能发出命令,但它仍然可以被瞄准,并且它可以(希望)被抬起或使用。所有这些行为在我的代码中都由接口(interface)表示,因此无论实现它的对象是什么,都可以使用具有相同行为的所有对象。代码示例:publicclassAll

c# - 重写继承方法时避免显式类型转换

我有一个基础抽象类,它也实现了一个特定的接口(interface)。publicinterfaceIMovablewhereTEntity:classwhereT:struct{TEntityMove(IMovermoverProvider);}publicabstractclassAnimal:IMovable{...publicvirtualAnimalMove(IMovermoverProvider){//performsmovementusingprovidedmover}}然后我继承了一些类,其中一些类必须重写基类的接口(interface)实现方法。publicclassS

c# - 外键列可以首先是 Entity Framework 6 代码中的枚举吗?

我首先将EF5DB转换为EF6代码。在旧设置中,有一些FK是字节。并且在应用程序中被映射到带有下划线字节类型的枚举。这一直很有效。首先转到代码和EF6,我发现声称枚举应该“正常工作”,而且对于常规列来说确实如此。我可以从这里开始publicbyteFavPersonality{get;set;}为此:publicPersonalityFavPersonality{get;set;}但是当涉及到也是外键的列时,我得到这个错误:System.ArgumentException:TheResultTypeofthespecifiedexpressionisnotcompatiblewitht

c# - 在 .NET 应用程序中检测重定向控制台输出中的关闭管道

.NETConsole类及其默认的TextWriter实现(可作为Console.Out隐含在例如Console.WriteLine中())当应用程序将其输出通过管道传输到另一个程序时,不会发出任何错误信号,并且另一个程序在应用程序完成之前终止或关闭管道。这意味着应用程序可能会运行超过必要的时间,将输出写入黑洞。如何检测重定向管道另一端的关闭?更详细的解释如下:这里有一对演示问题的示例程序。Produce相当慢地打印大量整数,以模拟计算效果:usingSystem;classProduce{staticvoidMain(){for(inti=0;iConsume只读取前10行输入然后退

c# - 使用 nunit 重新加载 app.config

我有多个NUnit测试,我希望每个测试都使用特定的app.config文件。有没有办法在每次测试前将配置重置为新的配置文件? 最佳答案 尝试:/*Usage*using(AppConfig.Change("my.config")){*//dosomething...*}*/publicabstractclassAppConfig:IDisposable{publicstaticAppConfigChange(stringpath){returnnewChangeAppConfig(path);}publicabstractvoidD

c# - 这个代码有什么用?

我不知道thiscode的用途.这种模式有什么用?[此处为后代重复代码]publicclassTurtlewhereT:Turtle{} 最佳答案 此模式本质上允许您引用父类中的具体子类。例如:publicabstractclassTurtlewhereT:Turtle{publicabstractTProcreate();}publicclassSeaTurtle:Turtle{publicoverrideSeaTurtleProcreate(){//...}}对比:publicabstractclassTurtle{public

c# - 如何打开一个流程使其没有焦点?

我正在尝试编写一些自动化程序来打开关闭一系列窗口(非隐藏、非恶意),我不希望它们在打开时窃取焦点。问题是,当每个窗口打开时,它会窃取焦点,阻止我在后台运行时工作。这是我在循环中执行以打开各种窗口的代码:using(Processproc=newProcess()){proc.StartInfo.FileName=filename;proc.StartInfo.Arguments=arguments;proc.Start();Thread.Sleep(1000);if(!proc.HasExited){proc.Kill();}}如何在没有焦点的情况下打开它们,以便我可以在此自动化运行时

c# - 有没有更好的方法来创建多维强类型数据结构?

我需要一个多维数据结构,其中每个维度都是一个在设计时已知的小列表。在我程序的不同位置,我希望能够以强类型方式访问按不同维度“切片”的数据。我在下面放了一些示例代码,适用于使用嵌套界面的2D示例,但我想它在3D或4D中会变得非常可怕。正如@kvb指出的那样,所需的样板代码将呈指数级增长。谁有更好的建议?我的意思是,保持代码简单/简短/易于理解,同时仍然保留按照以下几行做事的能力:Dataa=newData(...)...SomeMethodThatOnlyCaresAboutRedThings(a.Red)//takesaIBySize...SomeMethodThatOnlyCares

c# - XML反序列化泛型方法

我有下一个XML文件:d639a54f-baca-11e1-8067-001fd09b1dfd-24145e3b3b4cd-bb8e-11e1-8067-001fd09b1dfd0.28我将它反序列化为这个类:[XmlRoot("Root",IsNullable=false)]publicclassDocBalanceCollection{[XmlElement("Document")]publicListDocsBalanceItems=newList();}DocBalanceItem是:publicclassDocBalanceItem{[XmlElement("Id")]pub

c# - 在 .net 核心中使用构造函数参数进行依赖注入(inject)

我看到很多关于如何在.NETCore中使用DI的代码示例,但是它们都没有使用构造函数参数。例如:创建授权服务在构造函数中注入(inject)当前HTTPheader(X-Api-Key)在实现中检查我是否有权访问在这里,我不仅需要在我的IAuthorizationService上使用DI,还需要在构造函数中注入(inject)token。我知道如何在Ninject中执行此操作,但没有使用.NETCoreDI的经验。这是我的例子。publicvoidConfigureServices(IServiceCollectionservices){services.AddMvc();servic