Questions tagged «c#»

C#(发音为“ See Sharp”)是由Microsoft开发的一种高级,静态类型的多范例编程语言。C#代码通常针对Microsoft的.NET系列工具和运行时,其中包括.NET Framework,.NET Core和Xamarin。使用此标记可解决有关用C#或C#正式规范编写的代码的问题。

7
主要的C#DI / IoC框架如何比较?[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 3年前关闭。 改善这个问题 冒着进入神圣战争领土的风险,这些流行的DI / IoC框架的优点和缺点是什么,可以轻易地认为是最好的吗?..: Ninject 统一 温莎城堡 Autofac 结构图 我这里没有列出其他的C#DI / IoC框架吗? 就我的用例而言,我正在构建客户端WPF应用程序和WCF / SQL服务基础结构,易用性(尤其是在语法简洁明了方面),一致的文档,良好的社区支持和性能都是重要因素。由我选择。 更新: 引用的资源和重复的问题似乎已经过时了,知道所有这些框架的人能挺身而出并提供一些真正的见解吗? 我意识到,关于该主题的大多数意见可能会带有偏见,但我希望有人花时间研究所有这些框架,并且至少要有一个客观的比较。 如果以前没有做过,我很愿意进行自己的调查,但是我认为这至少是一些人已经做过的。 第二次更新: 如果您确实有多个DI / IoC容器的使用经验,请对这些容器的优缺点进行排名和总结,谢谢。这不是发现人们制作的所有晦涩的小容器的一种练习,我正在寻找流行的(和活动的)框架之间的比较。

16
您将如何使用LINQ进行“不参加”查询?
我有两个集合,两个集合中都具有属性Email。我需要获取第一个列表中Email第二个列表中不存在的项目的列表。对于SQL,我只会使用“ not in”,但我不知道LINQ中的等效项。怎么做? 到目前为止,我已经加入了,例如... var matches = from item1 in list1 join item2 in list2 on item1.Email equals item2.Email select new { Email = list1.Email }; 但是我不能加入,因为我需要区别,加入会失败。我需要某种使用包含或存在的方法,我相信。我只是还没有找到执行此操作的示例。
307 c#  linq 

7
如何在C#中获取文件大小?
我需要一种方法来使用C#获取文件的大小,而不是磁盘上的大小。这怎么可能? 目前我有这个循环 foreach (FileInfo file in downloadedMessageInfo.GetFiles()) { //file.Length (will this work) } 这会返回大小还是磁盘上的大小?
307 c#  filesize 

8
IEnumerable和使用收益回报的递归
我有一种IEnumerable<T>用于在WebForms页面中查找控件的方法。 该方法是递归的,当返回yield return值为递归调用的值时,返回我想要的类型时遇到一些问题。 我的代码如下所示: public static IEnumerable<Control> GetDeepControlsByType<T>(this Control control) { foreach(Control c in control.Controls) { if (c is T) { yield return c; } if(c.Controls.Count > 0) { yield return c.GetDeepControlsByType<T>(); } } } 当前,这将引发“无法转换表达式类型”错误。但是IEnumerable<Object>,如果此方法返回type ,则代码会生成,但是在输出中返回错误的类型。 有没有yield return同时使用递归的使用方法?

15
是否有不区分大小写的替代string.Replace的字符串?
我需要搜索一个字符串,%FirstName%并%PolicyAmount%用从数据库中提取的值替换所有出现的和。问题是FirstName的大小写不同。那使我无法使用该String.Replace()方法。我看过有关该主题的网页 Regex.Replace(strInput, strToken, strReplaceWith, RegexOptions.IgnoreCase); 但是由于某种原因,当我尝试用替换%PolicyAmount%时$0,替换从未发生。我认为它与正则表达式中的保留字符美元符号有关。 我是否可以使用另一种方法,而不涉及对输入进行处理以处理正则表达式特殊字符?
306 c#  .net  string  .net-2.0  replace 

9
Process.start:如何获取输出?
我想从我的Mono / .NET应用程序运行一个外部命令行程序。例如,我想运行mencoder。可能吗: 要获取命令行shell输出,并将其写在我的文本框中? 要获取数值以显示经过时间的进度条?
306 c#  .net  mono  process.start 

10
如何在不丢失C#中的堆栈跟踪的情况下抛出InnerException?
我通过反射调用可能导致异常的方法。在没有包装反射的情况下,如何将异常传递给调用者? 我抛出了InnerException,但这破坏了堆栈跟踪。 示例代码: public void test1() { // Throw an exception for testing purposes throw new ArgumentException("test1"); } void test2() { try { MethodInfo mi = typeof(Program).GetMethod("test1"); mi.Invoke(this, null); } catch (TargetInvocationException tiex) { // Throw the new exception throw tiex.InnerException; } }
305 c#  .net  exception 

12
我无法使用Google chrome加载资源:net :: ERR_BLOCKED_BY_CLIENT
运行项目后,我得到的是白页,但它与.net Client正常工作。我需要在浏览器中进行任何设置吗?并且链接将在错误后出现 Failed to load resource: net::ERR_BLOCKED_BY_CLIENT http://clkmon.com/adServe/getTag?cid=200093510300000000&pid=CRSRDR&type=inject Failed to load resource: net::ERR_BLOCKED_BY_CLIENT http://ads.626apps.com/a.php?626ref2=200093510300000000&626Name=Plus-HD-4.9&626ref3=B41A77C1675040A28F7E209964620E5EIE&626ref1=63726f73737269646572
305 c#  .net 


9
将文件返回到ASP.NET MVC中的“查看/下载”
我在将数据库中存储的文件发送回ASP.NET MVC中的用户时遇到问题。我想要的是一个列出两个链接的视图,一个链接用于查看文件,并让发送给浏览器的mimetype确定应如何处理它,另一个链接用于强制下载。 如果我选择查看一个名为的文件SomeRandomFile.bak,而浏览器没有用于打开此类型文件的关联程序,则默认为下载行为时,我没有任何问题。但是,如果我选择查看一个名为的文件,SomeRandomFile.pdf或者SomeRandomFile.jpg我只想打开该文件。但我也想保留下载链接到一边,以便无论文件类型如何都可以强制执行下载提示。这有意义吗? 我已经尝试过了FileStreamResult,它适用于大多数文件,它的构造函数默认情况下不接受文件名,因此根据URL为未知文件分配了一个文件名(该文件名不知道基于内容类型的扩展名)。如果通过指定来强制使用文件名,那么浏览器将无法直接打开文件,并且会出现下载提示。有人遇到过这种情况么? 这些是到目前为止我尝试过的例子。 //Gives me a download prompt. return File(document.Data, document.ContentType, document.Name); //Opens if it is a known extension type, downloads otherwise (download has bogus name and missing extension) return new FileStreamResult(new MemoryStream(document.Data), document.ContentType); //Gives me a download prompt (lose the ability to open by default if known …

3
您是否必须将Task.Run放入一个使它异步的方法中?
我试图以最简单的形式理解异步等待。为了这个示例,我想创建一个非常简单的方法,将两个数字相加,这是完全没有时间的,这只是在此处举例说明而已。 例子1 private async Task DoWork1Async() { int result = 1 + 2; } 例子2 private async Task DoWork2Async() { Task.Run( () => { int result = 1 + 2; }); } 如果我等待DoWork1Async(),代码将同步还是异步运行? 是否需要包装同步代码Task.Run以使该方法可以等待和异步,以免阻塞UI线程? 我试图弄清楚我的方法是a Task还是return Task<T>,是否需要包装代码Task.Run以使其异步。 我确定是愚蠢的问题,但我在网上看到的示例中,人们正在等待代码,这些代码中没有异步内容并且没有包装在Task.Runor中StartNew。

12
如何仅将Linq中DateTime类型中的没有日期的Date与带有实体框架的SQL进行比较?
有没有一种方法可以比较两个DateTime变量,Linq2Sql但是可以忽略“时间”部分。 该应用程序将项目存储在数据库中并添加发布日期。我想保留确切的时间,但仍然可以按时完成日期。 我想进行比较12/3/89 12:43:34,12/3/89 11:22:12而忽略了一天中的实际时间,因此两者都被认为是相同的。 我想我可以将一天中的所有时间都设置为00:00:00比较之前,但实际上我确实想知道一天中的时间,我也只想按日期进行比较。 我发现一些具有相同问题的代码,它们分别比较年,月和日。有一个更好的方法吗?

7
使用ASP.NET Core DI解决实例
如何使用ASP.NET Core MVC内置的依赖项注入框架手动解析类型? 设置容器非常简单: public void ConfigureServices(IServiceCollection services) { // ... services.AddTransient<ISomeService, SomeConcreteService>(); } 但是,ISomeService不进行注射怎么办?例如,我要这样做: ISomeService service = services.Resolve<ISomeService>(); 中没有此类方法IServiceCollection。

30
公开私有方法以对其进行单元测试……好主意?
主持人注意: 这里已经发布了39个答案(有些已经删除)。 你发布之前你的答案,考虑你是否能添加一些有意义的讨论。您很有可能只是重复别人已经说过的话。 我偶尔会发现自己需要在类中公开一个私有方法,只是为此编写了一些单元测试。 通常这是因为该方法包含该类中其他方法之间共享的逻辑,并且可以更轻松地自行测试该逻辑,或者另一个原因可能是我想测试同步线程中使用的逻辑而不必担心线程问题。 其他人是否发现自己这样做,因为我真的不喜欢这样做?我个人认为,好处超过了公开方法的问题,而该方法实际上并没有提供课堂以外的任何服务。 更新 谢谢大家的回答,似乎引起了人们的兴趣。我认为,普遍的共识是应该通过公共API进行测试,因为这是使用类的唯一方法,我对此表示同意。我在上面提到的几个我在上面会做的情况并不常见,我认为这样做的好处是值得的。 但是,我可以看到每个人都指出,它永远不会真正发生。而且,当我多考虑一下时,我认为更改代码以容纳测试是一个坏主意-毕竟,我认为测试在某种程度上是一种支持工具,并且如果愿意的话,将系统更改为“支持支持工具”是公然的。坏习惯。
301 c#  java  unit-testing 

6
Convert.ChangeType()在可空类型上失败
我想将字符串转换为对象属性值,我将其名称作为字符串。我正在尝试这样做: string modelProperty = "Some Property Name"; string value = "SomeValue"; var property = entity.GetType().GetProperty(modelProperty); if (property != null) { property.SetValue(entity, Convert.ChangeType(value, property.PropertyType), null); } 问题在于,当属性类型为可为空的类型时,这将失败并引发Invalid Cast Exception。这不是无法转换的值的情况-如果我手动执行此操作(例如DateTime? d = Convert.ToDateTime(value);),它们将起作用(我已经看到一些类似的问题,但仍然无法使它起作用)。
301 c#  .net  reflection 

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.