草庐IT

同一性

全部标签

c# - 在同一个线程中锁定字典

我有一个函数,它根据键(名称)返回字典中的一个条目,如果它不存在,则返回一个新创建的条目。我的问题是“双锁”:SomeFunction锁定_dictionary,检查键是否存在,然后调用一个也锁定同一个字典的函数,它似乎工作但我不确定是否这种方法存在潜在问题。publicMachineSomeFunction(stringname){lock(_dictionary){if(!_dictionary.ContainsKey(name))returnCreateMachine(name);return_dictionary[name];}}privateMachineCreateMach

c# - Ninject 3 InRequestScope 不为同一请求返回同一实例

最近,我将我的一个MVC3项目从Ninject2升级到Ninject3。在尝试找出InRequestScope不再可用的原因几分钟后,我发现它现在是Ninject.Web.Common的扩展。现在,当我尝试运行该应用程序时,Ninject的工作方式就像所有与范围InRequest绑定(bind)的类型都是InTransientScope一样;每次都会创建一个新实例。在我继承自NinjectModule的类中,我有一个简单的绑定(bind):Bind().ToSelf().InRequestScope();在我的Controller中,我有2个类型为ViewModel.Activity的

c# - 不同机器上的 Guid 唯一性

这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:IsaGUIDunique100%ofthetime?看完Guid上的所有帖子后,我仍然不清楚一件简单的事情:不同机器生成的Guids也保持或不保持其唯一性。我读过单机guid的唯一性,但我仍然不知道不同机器的唯一性

c# - 在 C# 中对同一结果进行多个断言的最佳实践

您认为对结果进行多重断言的最简洁方法是什么?过去我对它们进行了相同的测试,但这开始感觉有点脏,我一直在玩另一个使用设置的想法。[TestFixture]publicclassGridControllerTests{protectedreadonlystringRequestedViewId="A1";protectedGridViewModelResult{get;set;}[TestFixtureSetUp]publicvoidGet_UsingStaticSettings_Assign(){vardataRepository=newXmlRepository("test.xml")

c# - 手动设置 operationId 以允许在 Swashbuckle 中使用同一个动词进行多个操作

我需要知道是否可以设置自定义operationid或命名约定,我的意思是我知道可以按照生成operationId的方式覆盖操作过滤器https://azure.microsoft.com/en-us/documentation/articles/app-service-api-dotnet-swashbuckle-customize/usingSwashbuckle.Swagger;usingSystem.Web.Http.Description;namespaceSomething{publicclassMultipleOperationsWithSameVerbFilter:IOp

c# - 同一类型参数的协变和逆变

C#规范指出参数类型不能同时是协变和逆变的。这在创建协变或逆变接口(interface)时很明显,您分别用“out”或“in”修饰类型参数。没有同时允许两者的选项(“outin”)。这种限制仅仅是一种特定于语言的约束,还是基于范畴论的更深层、更根本的原因会让您不希望您的类型既是协变又是逆变的?编辑:我的理解是数组实际上是协变和逆变的。publicclassPet{}publicclassCat:Pet{}publicclassSiamese:Cat{}Cat[]cats=newCat[10];Pet[]pets=newPet[10];Siamese[]siameseCats=newSi

c# - HashSet<T> 是否与 List<T> 相同但具有唯一性?

我需要能够在一个集合中拥有独特的元素。我打算使用字典,这样我就可以使用ContainsKey方法,但我认为这会很浪费,因为我不会使用键/值对的值属性。我遇到了HashSet这看起来很有前途。我唯一能找到但在List中找不到的东西文档是HashSet是无序的。我认为这很好,我认为这意味着它不是使用IEqualityComparer订购的.只要项目的添加顺序在相同的索引位置,我认为就可以了,因为我必须进行重复检查,因此哈希集然后检查所有条目是否顺序。在比较这两种类型时,我还遗漏了什么吗? 最佳答案 不,重要的是HashSet没有任何排序

c# - NetFramework 应用程序在同一解决方案中引用 NetFramework 库,在另一个解决方案中引用 NetStandard 库。 : could not load file or assembly

关于从.NETFramework项目中引用.NETStandard类库的问题有很多类似的问题,其中netstandard库中的NuGet包依赖项不会流向netframework应用程序,并且Couldnotloadfileorassembly运行时发生错误:存在许多来源,例如下面的来源,表明可以通过添加对netframework项目缺少的依赖项来解决这个问题:https://stackoverflow.com/a/46015829/2704659然而,这是不利的,因为我不想让项目必须携带它们不应该需要的直接引用;依赖关系应该自然流动,以便将来添加/删除的依赖关系正常工作。其他来源表明可

c# - StreamReader 和 StreamWriter 在同一个 Stream 上?

如何关闭使用相同底层流的StreamReader和StreamWriter?varstream=/*...*/;varreader=newStreamReader(stream);varwriter=newStreamWRiter(stream);我知道我可以简单地忽略关闭读取器/写入器并关闭底层流。然而,这似乎有点hack,因为它是基于这样的假设,即读者/作者没有任何东西可以处理(将来可能不会是这种情况)。我知道这已在.NET4.5中通过额外的构造函数参数得到解决,但在.NET4.5发布之前,我该如何以正确的方式解决它? 最佳答案

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

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