草庐IT

c# - 防止两个线程进入具有相同值的代码块

假设我有这个函数(假设我以线程安全的方式访问缓存):objectGetCachedValue(stringid){if(!Cache.ContainsKey(id)){//longrunningoperationtofetchthevalueforidobjectvalue=GetTheValueForId(id);Cache.Add(id,value);}returnCache[id];}我想防止两个线程同时为相同的值运行“长时间运行的操作”。显然我可以将整个事情包装在一个lock()中,但是无论值如何,整个函数都会阻塞,我希望两个线程能够执行长时间运行的操作,只要它们正在寻找不同的

C# - 具有属性和节点值的 Xml 元素

我有一些Xml需要反序列化为一个对象。Xml是:Bob类是:publicclassPerson{publicTypeType;}publicclassType{[XmlAttribute("id")]publicstringid;//anotherpropertyforvalue"Bob"here,suchas:publicstringvalue;//????}我想使用XmlSerializer.Deserialize将此Xml反序列化为上面的具体对象(避免使用XPath等)我可以用什么Xml属性来装饰“Type”类,这样我不仅有一个“id”属性还有一个值(“Bob”)?

c# - 在 C# 中使用反射创建具有字符串值的未知枚举实例

当我在运行时拥有枚举的System.Type并检查了BaseType是否为System.Enum时,我在计算如何准确创建枚举实例时遇到了问题,我的值是一个与项目匹配的int值在神秘的枚举中。到目前为止,我的代码只是上面描述的逻辑,如下所示。if(Type.GetType(type)!=null){if(Type.GetType(type).BaseType.ToString()=="System.Enum"){return???;}}在过去使用枚举时,我总是在代码时知道我正在尝试解析哪个枚举,但在这种情况下我很困惑,并且运气不好以谷歌友好的方式阐明我的问题......我通常会这样做像(

具有键值的 C# foreach 循环

在PHP中,我可以使用foreach循环,这样我就可以访问键和值,例如:foreach($arrayas$key=>$value)我有以下代码:Regexregex=newRegex(pattern);MatchCollectionmc=regex.Matches(haystack);for(inti=0;imatch=newDictionary();for(intj=0;j在//here我想match.add(key,value)但我不知道如何从GroupCollection中获取key,它在这种情况应该是捕获组的名称。我知道gc["goupName"].Value包含匹配的值。

c# - 如何断言集合只包含一个具有给定属性值的元素?

如何断言集合只包含一个具有给定属性值的元素?例如:classNode{privatereadonlystringmyName;publicNode(stringname){myName=name;}publicstringName{get;set;}}[Test]publicvoidTest(){vararray=new[]{newNode("1"),newNode("2"),newNode("1")};Assert.That(array,Has.Some.Property("Name").EqualTo("1"));Assert.That(array,Has.None.Propert

c# - 具有重复值的枚举的 GetName

如果我在C#枚举中有重复值,说enumMyE{value1=1,value2=2,valued=1}以下字符串的值应该是什么?MyEN=(MyE)1;stringV1=N.ToString();stringV2=GetName(MyE,1);V1和V2必须包含相同的值是真的吗?这些值应该是什么?我没有在MSDN或这里找到任何关于重复枚举的“解引用”,如果我错过了,请给我指向一个链接。 最佳答案 实验表明:V1="value1"和V2="value1"但是,这并不能保证。MSDNpageonEnum.GetName状态:Ifmulti

c# - 具有单个键的多个值的哈希表

我想在单个键中存储多个值,例如:HashTableobj=newHashTable();obj.Add("1","test");obj.Add("1","Test1");现在这会引发错误。 最佳答案 您可以将您的test,test1,test2,...放入一个表中,然后将该表放入一个哈希表中作为对所有表都相同的键的值。例如尝试这样的事情:Listlist=newList();list.Add("test");list.Add("test1");然后:HashTableobj=newHashTable();obj.Add("1",li

c# - 具有默认值的 Asp.net webapi 枚举参数

我有一个Controller[HttpGet][RoutePrefix("api/products/{productId}")]publicHttpResponseMessageProducts(intproductId,TypeEnumptype=TypeEnum.Clothes){if(!Enum.IsDefined(typeOf(TypeEnum),ptype))//throwbadrequestexceptionelse//continueprocessing}Myenum声明为publicTypeEnum{Clothes,Toys,Electronics}目前,如果传递了一些

c# - 获取 DayOfWeek 值的本地化字符串

此代码未本地化:Enum.GetNames(typeof(DayOfWeek))我想要一个返回本地化字符串列表的方法,从任意DayOfWeek开始,这是本地化的,我想使用内置资源来实现这一点。到目前为止,我已经想出了下面的代码,但我觉得应该以一种不像hack的方式来支持它。publicListGetLocalizedDayOfWeekValues(DayOfWeekstartDay=DayOfWeek.Sunday){vardays=newList();DateTimedate=DateTime.Today;while(date.DayOfWeek!=startDay)date.Add

c# - 使用 JSON.NET 获取 JSON 值的路径

我正在尝试查找JSON值的路径。考虑以下JSON:{"car":{"type":[{"sedan":{"make":"honda","model":"civics"}},{"coupe":{"make":"ford","model":"escort"}}]}}如何获取值“honda”的路径?我正在寻找类似的东西......car_type_0_sedan_make_本田JSON.NET支持吗?我看到有一个JToken.Path属性,但它目前不可用。http://json.codeplex.com/workitem/24136 最佳答案