草庐IT

c# - IsAssignableFrom() 在应该返回 true 时返回 false

我正在开发一个插件系统,它加载包含在指定文件夹中的.dll。然后我使用反射来加载程序集,遍历它们包含的类型并识别任何实现我的IPlugin接口(interface)的类型。我正在使用类似于以下的代码进行检查:foreach(TypetinmyTypes){if(typeof(IPlugin).IsAssignableFrom(t)){...}}出于某种原因,IsAssignableFrom()在应该返回true时一直返回false。我已经尝试通过显式地给它一个应该通过的类型来替换t,它工作正常,但由于某种原因它不能使用从加载的程序集返回的类型。更奇怪的是,代码在我同事的机器上运行良好,

c# - C# 中 for(;;) 和 while (true) 的区别?

从句法上看,它们会无限循环,直到遇到break语句,但它们是否被编译成相同的东西?for稍微快一点是因为它没有要检查的条件吗?除了代码可读性之外,还有什么区别吗? 最佳答案 鉴于此输入:privatestaticvoidForLoop(){intn=0;for(;;){Console.WriteLine(n++);}}privatestaticvoidWhileLoop(){intn=0;while(true){Console.WriteLine(n++);}}...你得到这个输出:.methodprivatehidebysigst

c# - 为什么要重载 true 和 false 而不是定义 bool 运算符?

我一直在阅读有关在C#中重载true和false的内容,我想我理解这与定义bool运算符之间的基本区别。我看到的例子是这样的:publicstaticbooloperatortrue(Foofoo){return(foo.PropA>0);}publicstaticbooloperatorfalse(Foofoo){return(foo.PropA对我来说,这等同于说:publicstaticimplicitoperatorbool(Foofoo){return(foo.PropA>0);}据我所知,不同之处在于,通过分别定义true和false,您可以拥有一个既是true又是fals

c# - 打开 TopMost = true 的 WinForms 窗体但没有窃取焦点?

我有一个在用户屏幕上弹出并具有TopMost=true的表单,但它抢走了焦点。我怎样才能让它在第一次出现时不抢走焦点? 最佳答案 这对我有用。它提供TopMost但没有焦点窃取。protectedoverrideboolShowWithoutActivation{get{returntrue;}}privateconstintWS_EX_TOPMOST=0x00000008;protectedoverrideCreateParamsCreateParams{get{CreateParamscreateParams=base.Crea

c# - Winform 自定义控件 : DesignMode doesn't return true whereas in Design Mode

我在这里了解了DesignModeHowtorefreshawinformcustomcontrolatdesigntimeafterchangingaproperty但是当我在我的自定义控件的构造函数中使用它时,它永远不会返回true,所以当我拖放我的自定义控件时它总是显示max=200,这是怎么回事?if(this.DesignMode){this.Min=0;this.Max=100;}else{this.Min=0;this.Max=200;}this.LabMin.Text=this.Min.ToString();this.LabMax.Text=this.Max.ToStr

c# - 为什么 ((IList<T>)array).ReadOnly = True 但 ((IList)array).ReadOnly = False?

这个问题在这里已经有了答案:Array.IsReadOnlyinconsistentdependingoninterfaceimplementation(4个答案)关闭8年前。我知道在.NET中所有数组都派生自System.Array并且System.Array类实现了IList,ICollection和IEnumerable.实际的数组类型也实现了IList,ICollection和IEnumerable.这意味着如果您有一个String[],那么String[]对象也是一个System.Collections.IList和一个System.Collections.Generic.I

c# - 我什么时候应该使用 ConfigureAwait(true)?

有没有人遇到过使用ConfigureAwait(true)的场景?因为true是默认选项,所以我不知道你什么时候会使用它。 最佳答案 true尝试将延续编码回捕获的原始上下文;否则为假。实际上更像是说ConfigureAwait(true)就像使用.ContinueWith(t=>{...},TaskScheduler.FromCurrentSynchronizationContext()),其中ConfigureAwait(false)就像使用.ContinueWith(t=>{...})。如果传递false,则允许继续在线程池线

c# - 如果 EnableOptimization 设置为 true,则 JS 包不会呈现

我不知道我是否做错了什么,但这可能是MVC4中的一个错误。我想知道我该如何解决这个问题?工作场景publicclassBundleConfig{publicstaticvoidRegisterBundles(BundleCollectionbundles){ScriptBundlescriptBundle=newScriptBundle("~/js");string[]scriptArray={"~/content/plugins/jquery/jquery-1.8.2.min.js","~/content/plugins/jquery/jquery-ui-1.9.0.min.js",

c# - 我们什么时候需要使用 [Browsable(true)]?

我们什么时候需要使用[Browsable(true)]?编辑(由SLaks撰写):他在问(我假设)为什么需要传递true作为参数,因为它已经是true默认。 最佳答案 据我所知,从来没有。编辑我错了。如果您想使基类中具有[Browsable(false)]的属性(例如UserControl.Text)可浏览,则这是必要的。 关于c#-我们什么时候需要使用[Browsable(true)]?,我们在StackOverflow上找到一个类似的问题: https:/

c# - FileStream.Flush() 和 FileStream.Flush(True) 有什么区别?

MSDN说FileStream.Flush(True)“还清除所有中间文件缓冲区。”。“所有中间文件缓冲区”到底是什么意思? 最佳答案 它会将缓冲在文件系统缓存中的文件数据写入磁盘。该数据通常是根据磁盘写头的位置延迟写入的。拥有1GB的缓存数据在技术上是可行的,因此可能需要相当长的时间。如果这对您很重要,请考虑使用FileOptions.WriteThrough选项。它完全禁用写缓存。这可能非常昂贵;您会发现硬盘到底有多慢。 关于c#-FileStream.Flush()和FileStr