草庐IT

c# - 我可以让我的程序集引用另一个程序集的任何版本吗?

这个问题在这里已经有了答案:Isitpossibletoreplaceareferencetoastrongly-namedassemblywitha"weak"reference?(3个答案)关闭4年前。我正在开发一个类库(MyClassLibrary)。我依赖第三方类库(ThirdPartyClassLibrary)。我需要使用与我的用户相同版本的ThirdPartyClassLibrary。例如,如果我在ThirdPartyClassLibrary中设置静态值,用户需要看到该更改。我类的用户可能依赖于4个不同版本的ThirdPartyClassLibrary中的任何一个。Thir

c# - 我可以将 C# 函数标记为 "this function does not enumerate the IEnumerable parameter"吗?

同一可枚举的多次枚举对我们来说一直是一个性能问题,因此我们尝试在代码中消除这些警告。但是我们有一个通用的扩展函数来抛出空参数异常,它会生成很多这样的警告。它的签名看起来像这样:publicstaticvoidVerifyArgumentIsNotNull(thisTvalue,stringvalueName)whereT:class它所做的只是检查null并抛出一个格式良好且本地化(对于当时正在使用的任何人类语言)的异常。当此函数用于IEnumerable参数时,它会使代码分析警告IEnumerable可能的多次迭代,因为分析器不知道该函数的作用。我想在这个函数上加上一些标签,上面写着

c# - 我可以将 DataContractSerializer 配置为不在输出 XML 中创建可选(即 Nullable<> 和 List<>)元素吗?

我正在使用新的.NET3.0DataContractSerializer。我有要序列化的Nullable>和List>对象。示例:[DataContract(Namespace="")]classTest{publicstaticvoidGo(){Testtest=newTest();vardcs=newDataContractSerializer(typeof(Test));dcs.WriteObject(newStreamWriter("test.xml").BaseStream,test);}[DataMember]publicNullableNullableNumber=nul

c# - 我可以在 .NET 2.0 或 3.0 中使用扩展方法和 LINQ 吗?

当我尝试使用.NET2.0或3.0运行时添加扩展方法时,出现错误:Cannotdefineanewextensionmethodbecausethecompilerrequiredtype'System.Runtime.CompilerServices.ExtensionAttribute'cannotbefound.AreyoumissingareferencetoSystem.Core.dll?但是当我尝试将它添加到项目时,我无法在可用引用列表中找到System.Core。我需要做什么才能使用扩展方法并反过来LINQ在我的项目中? 最佳答案

c# - 我可以将一个类标记为不是我的代码以便调试器跳过它吗?

我有一个经过全面测试的实用程序类,我不希望VS调试器进入它的任何方法。我想我听说过一种将某些东西标记为不是我的代码的方法,这样JustMyCode调试器设置会导致调试器跳过这些方法调用,但我想不起来是什么class属性是(我也无法通过Google成功搜索到它)。我知道我可以将这个类分离到它自己的程序集中并在Release模式下构建它以缓解这个问题,但我想进入一些程序集(并且我想将这个类保留在原处).这可能吗,还是我想出了这个选项?更新我对这两个选项(DebuggerStepThrough和DebuggerNonUserCode)进行了一些测试,我发现当启用/禁用JustMyCode时,

c# - 我可以用 protected /私有(private)的静态变量做什么?

我知道我可以写了:protectedstatic在我的C#类中(在我的例子中,是一个aspx.cs)。以及:privatestatic这是什么意思?静态无处不在。为什么要保护/私有(private)? 最佳答案 static的定义并不是“随处可用”。它是在AppDomain范围内声明的类型之间共享的变量。AccessModifiers不改变这个定义,但明显影响访问范围。你混淆了static带有访问修饰符的修饰符。静态变量仍然需要定义可访问性。在您的示例中,私有(private)静态变量只能在定义它的类型中访问,而protected变

c# - 如何将凭据传递到计算机以便我可以在其上使用 Microsoft.Win32.RegistryKey.OpenRemoteBaseKey()?

This.NETAPI如果我尝试在与我位于同一域中的计算机中打开注册表,则工作正常(并且我的登录用户在目标计算机上具有管理员权限)。如果它是具有不同本地管理用户(我确实知道其密码)的域外计算机,那就很棘手了。我尝试使用WNetUseConnection()(在过去我想要读取远程磁盘文件的情况下,这对我很有帮助)在调用OpenRemoteBaseKey()之前,但没有成功——我收到拒绝访问异常。显然,我必须以其他方式传递凭据,但如何传递? 最佳答案 我成功地使用了以下代码来访问计算机上的文件:#regionimports[DllImp

c# - 为什么我可以在迭代 LINQ 列表时对其进行编辑?

我最近遇到一个问题,我可以更改在foreach循环中迭代的IEnumerable对象。据我了解,在C#中,您不应该能够编辑正在迭代的列表,但经过一番挫折后,我发现这正是正在发生的事情。我基本上循环了一个LINQ查询并使用对象ID在数据库中对这些对象进行了更改,这些更改影响了.Where()语句中的值。有人对此有解释吗?似乎每次迭代时LINQ查询都会重新运行注意:解决此问题的方法是在.Where()之后添加.ToList(),但我的问题是为什么会发生此问题,即如果它是错误或我不知道的事情usingSystem;usingSystem.Linq;namespaceMyTest{classP

c# - 我可以通过 gacutil 安装,但不能卸载相同的 dll

我已经使用gacutil安装了一个DLL。gacutil.exe/iSI.ArchiveService.CommonLogic.Exceptions.dll使用gacutil/l显示确实安装了。SI.ArchiveService.CommonLogic.Exceptions,Version=1.0.0.0,Culture=neutral,PublicKeyToken=925c8734ae397609,processorArchitecture=MSIL然后我想卸载它。gacutil.exe/uSI.ArchiveService.CommonLogic.Exceptions.dllMic

c# - 为什么我可以在 C# 中实例化一个没有构造函数的类?

C#中的类怎么可能没有定义构造函数?例如我有一个类internalclassTextStyle{internalstringtext="";internalFontfont=newFont("Arial",8);internalColorcolor=Color.Black;}并且在代码中这个类被实例化为TextStyletextParameters=newTextStyle(); 最佳答案 如果您没有为非静态类声明任何构造函数,编译器会为您提供一个公共(public)(或抽象类的protected)无参数构造函数。你的类实际上有一个