草庐IT

c# - 通过将 UI 分解为 'regions' 来提高 WPF 性能 - 这可能吗?

我在WPF客户端应用程序上运行了一个非常简单的性能测试:publicpartialclassMainWindow:Window{privateObservableCollectiondata=newObservableCollection();publicObservableCollectionDataObj{get{returndata;}}privatevoidbutton1_Click(objectsender,RoutedEventArgse){for(intj=0;j{for(inti=0;i{data.Add(1);}));//updatesthecountDispatch

c# - 使用代码契约来定义不可变接口(interface)?

我可以使用代码契约在接口(interface)上定义只读、不变的属性吗?IE。实例化后始终产生相同值的属性? 最佳答案 首先注意.NET中的术语:只读:您碰巧拥有的接口(interface)不能用于改变对象或集合不可变的:没有什么可以改变对象或集合现在回到你的问题。在.NET代码约定中,所有属性getter都隐式标记为“纯”。这意味着从getter中读取永远不会有明显的副作用。从严格意义上讲,如果您有一个只有只读属性的抽象接口(interface),那么整个接口(interface)都被认为是只读的。但是,听起来您真正想要的是一种将

c# - 使用反射来确定哪些字段是属性的支持字段

我正在使用反射来映射对象。这些对象在托管代码中,但除了通过反射之外,我看不到它们的源代码、底层结构等。所有这一切的首要目标是一个对象的基本内存映射(在功能上类似于SOS.dllDumpObject和!ObjSize命令)。因此,我试图确定哪些成员被“重复计算”为字段和属性。例如:publicclassCalendarEntry{//privatepropertyprivateDateTimedate{get;set;}//publicfieldpublicstringday="DAY";}当映射显示时:字段天k__BackingField属性日期像这样的类在哪里:publicclass

c# - MSYS/Cygwin 使用什么机制来模拟 Unix 域套接字?

我正在尝试编写(在C#中)一个软件,该软件通过(MSYS模拟的)Unix域套接字与另一个使用MSYS构建的软件进行通信。我了解到“套接字服务器”(我不清楚正确的术语是什么)会创建一个临时文件,其内容如下:!59108282F93E1-9E2D051A-46B57EFC-64A1852F59108对应于一个TCP端口,“套接字服务器”正在环回接口(interface)上监听该端口。使用数据包捕获工具,我已经能够确定“套接字客户端”连接到此端口,并通过环回接口(interface)交换信息。我在我的软件中复制了这个行为,“套接字客户端”连接到我的监听端口,但没有传输任何信息。我相信这里还有

c# - 当用户选择一条记录时,推荐使用哪种方式来填充 Web 表单上的所有控件?

我有一个显示所有员工列表的GridView控件。当用户从此列表中选择任何员工时,记录将显示在Web表单上,所有输入控件都预先填充了值。我想知道执行此操作的任何好方法。我应该将所有输入控件绑定(bind)到任何SqlDataSource还是应该通过从DataSet中选取值来重新填充所有输入控件。 最佳答案 首先在GridView上添加选择按钮:然后在GridView上添加OnRowCommand="RowCommand"属性,以便在单击按钮时调用此函数以及函数背后的代码:protectedvoidRowCommand(objectse

c# - 有没有比在构造函数中作为参数发送更好的方法来设置大量必需的属性?

我有一个类,为了完成它的工作需要设置8个不同的属性值。我想确保在尝试执行方法之前设置了所有8个属性。我目前已经通过构造函数传入并设置了所有参数。有更好的方法吗? 最佳答案 您可以允许在不指定所有属性值的情况下创建对象,然后如果在对象状态对于要执行的方法调用有效之前调用该方法,则该方法将抛出InvalidOperationException,这在这种情况意味着所有8个属性都将具有有效值。这样您就可以为消费者提供更多的灵active。它可以在某个时刻创建一个新实例,在另一个时刻设置它的属性,然后才调用该方法。这是一个通过.NET代码库使

c# - 为什么可以只使用别名来声明枚举而不是 .NET 类型?

这很完美..publicenumNodeType:byte{Search,Analysis,Output,Input,Audio,Movement}这会返回编译器错误...publicenumNodeType:Byte{Search,Analysis,Output,Input,Audio,Movement}使用反射时也会发生同样的情况...那么,有人知道为什么enum-base只是一个整型吗? 最佳答案 可能它只是一个不完整的编译器实现(虽然有记录)。从技术上讲,这也应该有效,但事实并非如此。usingx=System.Byte;p

c# - 尝试使用 LDAP 连接来连接 AD 时出错

尝试使用此代码连接ADPrincipalContextcontext=newPrincipalContext(ContextType.Domain,domain)但我收到错误消息:TheLDAPserverisunavailable.有什么想法吗? 最佳答案 问题是:您是否将我们的域指定为“mydomain.com”(DNS格式)或作为“dc=mydomain,dc=com”(AD样式格式)令我惊讶的是,域名必须采用DNS格式(例如“mydomain.com”)才能正常工作(NOT在通常的AD中-样式格式为“dc=mydomain,

c# - 在 C# 中是否有一种很好的强类型方法来处理 PropertyChanged 事件?

更改属性名称一定是比较常见的事件,并且期望VisualStudio中的重命名功能能够处理所有必要的重命名,INotifyPropertyChanged的​​PropertyChanged事件的属性名称除外。有没有更好的方法以某种方式使其强类型化,这样您就不需要记住手动重命名它? 最佳答案 编辑:nameof到达了c#6。耶!没有nameof/infoof等;对此进行了很多讨论,但事实就是如此。有一种方法可以在.NET3.5中使用lambda表达式(并解析表达式树),但实际上不值得为此付出代价。现在,我只坚持使用字符串(如果您决心不破

c# - 使用 c# 和 sql 来滚动您自己的 wiki 有什么用?

我想了解wiki的工作原理,至少从较高的层次上了解。当用户保存更改时,是否总是在数据库中为该wiki文章插入一个新行(10个修订,数据库中的10行)。 最佳答案 我同意所有答案。Wiki通常将每次编辑作为数据库中的新记录进行处理。您可能有兴趣查看完整的LayoutoftheMediaWikidatabasediagram,Wikipedia背后的wiki引擎.请注意,每个修订版的全文都存储在text表的MEDIUMBLOB字段中。 关于c#-使用c#和sql来滚动您自己的wiki有什么用