草庐IT

c# - WPF 我应该如何评估属性路径?

我正在编写一个自定义控件,并且我有一个字符串形式的属性路径(想想comboBox.SelectedValuePath)。为任意对象评估此字符串的最佳代码方法是什么?我显然可以自己解析它,但这是一个hack,我希望路径支持comboBox.SelectedValuePath所做的一切(为了保持一致性)。结果(感谢AranMulholland):不确定它的性能,但我现在不太关心性能。publicclassBindingEvaluator{#regionTargetClassprivateclassTarget:DependencyObject{publicstaticreadonlyDep

c# - 我的类(class)应该订阅自己的公共(public)事件吗?

我正在使用C#3.0。按照我的标准事件模式:publiceventEventHandlerSomeEventHappens;protectedvirtualvoidOnSomeEventHappens(EventArgse){if(SomeEventHappens!=null){SomeEventHappens(this,e);}}privateobject_someProperty;publicobjectSomeProperty{get{return_someProperty;}privateset{if(_someProperty==value){return;}OnSomeEv

c# - 我应该在 #if (DEBUG) 中包装对 Debugger.Log() 的调用吗?

是否有必要在#if(DEBUG)预处理器指令中包装对Debugger.Log()的调用以优化代码,或者C#编译器是否会在构建RELEASE配置时仍然生成优化代码? 最佳答案 在RELEASE模式下,this调用没有任何类型的优化。调用出现在IL中。唯一的区别是如果没有DEBUGGER则它没有任何效果。来自文档Debugger.Log:Ifthereisnodebuggerattached,thismethodhasnoeffect.我建议衡量您应用的性能,然后选择要遵循的步骤。如果没有显着差异(从您的应用的角度来看),我会保留该日志

c# - HttpRequest.Content.IsMimeMultipartContent() 在应该返回 true 时返回 false

我需要将HTTP请求作为MultiPartFormData发送到RESTController。它正在工作,但现在我对我的Controller进行的检查声称请求的类型不正确,即使我可以在调试器中看到请求的类型正确。供引用:这是调用它的控制台应用程序代码:usingSystem;usingSystem.IO;usingSystem.Net.Http;usingSystem.Net.Http.Headers;usingSystem.Text;namespaceQuickUploadTestHarness{classProgram{staticvoidMain(string[]args){us

c# - 我是否应该将 async/await 添加到单行函数中?

这个问题在这里已经有了答案:Whyuseasyncandreturnawait,whenyoucanreturnTaskdirectly?(8个答案)关闭5个月前。我是否应该将async/await添加到单行函数中,例如:publicasyncTaskGetFoo(){returnawaitHandleAsync(....);}或者如果参数不需要异步调用并且我可以简单地写,这是不需要的开销:publicTaskGetFoo(){returnHandleAsync(....);}

c# - `ReadAsAsync<string>` 和 `ReadAsStringAsync` 应该用来做什么?

应该做什么HttpContentExtensions.ReadAsAsync和HttpContent.ReadAsStringAsync用来做什么?他们似乎在做类似的事情,但工作方式却很奇怪。下面是几个测试及其输出。在某些情况下JsonReaderException被抛出,在某些情况下,输出JSON但带有额外的转义字符。我最终在我的代码库中同时使用了这两个函数,但如果我能理解它们应该如何工作,我希望能在其中一个上保持一致。//CreatedataandserialisetoJSONvardata=new{message="helloworld"};stringdataAsJson=Js

c# - 我应该使用 int 还是 UInt16?

这可能有点微不足道,但在C#中,当在变量中存储网络端口时,您更喜欢int还是UInt16?框架类在处理网络端口时使用int,尽管UInt16实际上表示有效值。 最佳答案 signed(int/short等,而不是uint/ushort)具有作为CLS的优势合规,因此除非您有充分的理由,否则建议这样做。Reint与short-在大多数情况下,使用int(或uint),因为所有运算符都为此进行了优化。如果您只是存储和检索它,那么这当然不是问题。 关于c#-我应该使用int还是UInt16?,

c# - 隐式运算符应该处理 null 吗?

我们有一个具有隐式字符串运算符的类型。它看起来像这样:publicclassFoo{readonlystring_value;Foo(stringvalue){_value=value;}publicstaticimplicitoperatorstring(Foofoo){returnfoo._value;}publicstaticimplicitoperatorFoo(stringfooAsText){returnnewFoo(fooAsText);}}我们刚刚遇到这样一种情况,其中传递给隐式运算符的实例是null。显然,我们以NullReferenceException结束。我认为

c# - REST 标准 - 输出模型是否应该始终匹配输入模型?

所以我有要求部分输出模型必须包含UI重要信息。这些信息本质上是文本翻译和日期、价格、长度的建议格式。因此,输出模型的示例可能是:{statuses:{enumValue1:"DisplayThisText",enumValue2:"DisplayThisText2",},thePrice:{value:3.50,formattedValue:"$3.50"},length:{meters3,formattedValue:"3ft."},iAmAPropertyOnlyInGet:42}现在,如果我将其作为输出模型,那么使用完全不同的输入模型是否“可以”?{status:{enumVal

c# - 我应该用 TraceSource.TraceEvent 方法中的 id 参数来识别什么?

我使用TraceSource用于登录我的.NET项目的类。然而,我一直不清楚的一点是,TraceEvent中的id参数的意图是什么?方法。目前,我总是将它设置为0。但是它的预期用途或典型用途是什么?我能想到几种可能性:它是事件发生的ID(即同一行代码在每次执行时产生不同的ID);它是方法调用的ID(即您可以从ID推断代码行);它是一系列类似事件的ID(例如,表示数据库不存在的所有错误消息共享相同的ID);它是与逻辑操作相关的一组事件的ID,结合TraceEventType.(Start|Stop|Suspend|Resume|Transfer)枚举值; 最佳