草庐IT

c# - 可以转换为非继承的接口(interface)吗?

为什么不能转换一个实例:sealedclassFoo{publicvoidGo(){}}...到这个界面:interfaceIBar{voidGo();}...即使Foo具有IBar的签名?如何将Foo的实例转换为IBar?假设我无法控制Foo。 最佳答案 不,C#不支持鸭子类型。这个问题的OOP方法是使用theAdapterPattern.你会这样做:classFooBarAdapter:IBar{privatereadonlyFoofoo;publicFooBarAdapter(Foofoo){this.foo=foo;}pub

c# - 执行非查询 : Connection property has not been initialized.

下午,所以我已经在这个问题上研究了几个小时,但无法真正克服最后一个障碍。下面是我正在编写的这个程序的代码:usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;usingSystem.Diagnostics;usingSystem.Data;usingSystem.Data.SqlClient;usingSystem.Configuration;namespaceTest{classProgram{staticvoidMain(){EventLogalog=newEventLog();

c# - 从中间有非数字的字符串中解析数字

我正在处理.NET项目,我试图仅解析字符串中的数值。例如,strings="12ACD";intt=someparefun(s);print(t)//tshouldbe12几个假设是字符串模式始终是数字后跟字符。数字部分总是一位或两位数的值。是否有任何C#预定义函数来解析字符串中的数值? 最佳答案 没有这样的功能,至少我不知道。但一种方法是使用正则表达式删除所有非数字的内容:usingSystem;usingSystem.Text.RegularExpressions;intresult=//TheConvert(System)cl

c# - c# 中的非自动阻塞 MessageBoxes

有人知道.NET中的messageBox在关闭之前不会阻塞创建它的线程吗? 最佳答案 privatevoidShowMessageBox(stringtext,stringcaption){Threadt=newThread(()=>MyMessageBox(text,caption));t.Start();}privatevoidMyMessageBox(objecttext,objectcaption){MessageBox.Show((string)text,(string)caption);}您可以使用文本和标题调用Show

c# - 我可以将契约(Contract)留在代码中,以便与非代码契约(Contract)开发人员使用的代码库合并吗?

在过去的几个月里,我一直在为我的公司开发一个副项目,但现在上级决定它非常适合现有产品。我一直在使用Microsoft的CodeContracts开发用于静态类型检查的辅助项目(部分原因是我以前没有使用过它们并且渴望学习)。我的问题是,如果我将我的代码checkin到代码库中并使用Contracts,是否所有其他开发人员都需要安装CodeContracts工具才能继续开发?我知道他们都没有安装它,而且我是这里的初级人员,所以我怀疑我能否说服他们所有人都安装它。我使用的是.Net4.5,因此包含了代码契约库,但我想知道VisualStudio是否会提示它们没有使用CONTRACTS_FUL

表示路径的 C#(非静态)类

我正在寻找一个C#类表示文件系统路径。我想使用它(而不是字符串)作为变量和方法参数的数据类型(主要原因:类型安全、concat-proof、逻辑比较)。System.IO.Path提供了我想要的大部分功能,但它是静态的。据我所知,System.IO.FileInfo执行IO操作以完成其工作。我只需要路径字符串的包装器。谢谢! 最佳答案 可能是图书馆NDepend.Helpers.FileDirectoryPath正是您要找的。它提供:强类型文件/目录路径。相对/绝对路径转换。路径规范化API路径有效性检查API路径比较API路径浏览

c# - 如何在 C# winform 应用程序中写入非缓存文件

我试图确定最坏情况下的磁盘速度,因此我编写了以下函数。staticpublicdecimalMBytesPerSec(stringvolume){stringfilename=volume+"\\writetest.tmp";if(System.IO.File.Exists(filename))System.IO.File.Delete(filename);System.IO.StreamWriterfile=newSystem.IO.StreamWriter(filename);char[]data=newchar[64000];Stopwatchwatch=newStopwatch

c# - 因非对象字段错误而错误对齐或重叠

我正在尝试创建以下结构:[StructLayout(LayoutKind.Explicit,Size=14)]publicstructMessage{[FieldOffset(0)]publicushortX;[FieldOffset(2)][MarshalAs(UnmanagedType.ByValArray,SizeConst=5)]privateushort[]Y;[FieldOffset(12)]publicushortZ;}我收到以下错误:无法从程序集中加载类型“Message”,因为它在偏移量4处包含一个对象字段,该字段未正确对齐或与非对象字段重叠。有谁知道为什么这会导致错

c# - 使用非管理员组成员的用户登录时无法加载文件或程序集 'Microsoft.CSharp'

我创建了一个网站,当我使用administrator登录时编译成功,但是当我使用任何其他用户登录时,出现以下错误。Couldnotloadfileorassembly'Microsoft.CSharp,Version=4.0.0.0,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a'oroneofitsdependencies.Eitherarequiredimpersonationlevelwasnotprovided,ortheprovidedimpersonationlevelisinvalid.(ExceptionfromHRESU

c# - 如何使静态构造函数成为非私有(private)的?

C#中的静态构造函数不允许使用public、private等访问修饰符。然而,VisualStudio代码分析在C#安全类别中有一个警告,显示“CA2121:Staticconstructorsshouldbeprivate”。是否可以使静态构造函数成为非私有(private)的?或者这是VisualStudio代码分析的错误?澄清:我并不是要让任何构造函数成为非私有(private)的。所以为什么?”问题无关紧要。我只是对两个Microsoft工具之间的矛盾感到好奇,想看看是否有任何我不知道的静态构造函数的处理方式。 最佳答案 C