Questions tagged «c#»

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

4
从Process.Start C#隐藏控制台窗口
我正在尝试使用System.Diagnostics.Process类在远程计算机上创建进程。我能够创建一个过程。但是问题是,创建服务需要很长时间,并且会显示控制台窗口。另一个烦人的事情是控制台窗口显示在我的Windows窗体顶部,而我无法对该窗体执行任何其他操作。我已将所有属性设置为CreateNoWindow = true, proc.StartInfo.WindowStyle = ProcessWindowStyle.Hidden 但仍然显示控制台窗口。即使我已经将输出和错误重定向到单独的流,但没有运气。 还有其他隐藏控制台窗口的方法吗?请帮帮我。 这是我用来执行sc命令的部分代码。 Process proc = new Process(); proc.StartInfo.UseShellExecute = false; proc.StartInfo.CreateNoWindow = true; proc.StartInfo.WindowStyle = ProcessWindowStyle.Hidden; proc.StartInfo.FileName = "sc"; proc.StartInfo.Arguments = string.Format(@"\\SYS25 create MySvc binPath= C:\mysvc.exe"); proc.StartInfo.RedirectStandardError = false; proc.StartInfo.RedirectStandardOutput = false; proc.StartInfo.UseShellExecute = false; proc.StartInfo.CreateNoWindow = true; proc.Start(); proc.WaitForExit();

5
为什么此异步操作挂起?
我有一个多层.Net 4.5应用程序,该应用程序使用C#的new async和await挂起的关键字来调用方法,但我不知道为什么。 在底部,我有一个异步方法来扩展我们的数据库实用程序OurDBConn(基本上是基础DBConnection和DBCommand对象的包装器): public static async Task<T> ExecuteAsync<T>(this OurDBConn dataSource, Func<OurDBConn, T> function) { string connectionString = dataSource.ConnectionString; // Start the SQL and pass back to the caller until finished T result = await Task.Run( () => { // Copy the SQL connection so that we don't get two …

9
如何在WPF / MVVM应用程序中处理依赖项注入
我正在启动一个新的桌面应用程序,我想使用MVVM和WPF进行构建。 我也打算使用TDD。 问题是我不知道如何使用IoC容器将依赖项注入生产代码中。 假设我具有以下类和接口: public interface IStorage { bool SaveFile(string content); } public class Storage : IStorage { public bool SaveFile(string content){ // Saves the file using StreamWriter } } 然后我有另一个具有IStorage依赖关系的类,还假设该类是ViewModel或业务类... public class SomeViewModel { private IStorage _storage; public SomeViewModel(IStorage storage){ _storage = storage; } } 有了这个,我可以轻松地编写单元测试,以确保它们能够正常工作,例如使用模拟等。 问题是要在实际应用程序中使用它。我知道我必须有一个链接IStorage接口的默认实现的IoC容器,但是我该怎么做呢? 例如,如果我具有以下xaml,将如何处理: <Window …

17
Selenium WebDriver:等待带有JavaScript的复杂页面加载
我有一个Web应用程序可以使用Selenium进行测试。页面加载时运行着许多JavaScript。 该JavaScript代码编写得不太好,但是我什么也不能更改。因此,使用findElement()方法等待元素出现在DOM 中不是一个选择。 我想在Java中创建一个通用函数以等待页面加载,可能的解决方案是: 运行JavaScript脚本WebDriver并将结果存储document.body.innerHTML在字符串变量中body。 将body变量与的早期版本进行比较body。如果它们相同,则设置递增计数器,notChangedCount否则设置notChangedCount为零。 等待一小段时间(例如50毫秒)。 如果页面有一段时间没有变化(例如500毫秒),notChangedCount >= 10则退出循环,否则循环至第一步。 您认为这是有效的解决方案吗?

5
ReSharper好奇心:“参数仅用于前提条件检查。”
为什么ReSharper会要求我提供此代码? private Control GetCorrespondingInputControl(SupportedType supportedType, object settingValue) { this.ValidateCorrespondingValueType(supportedType, settingValue); switch(supportedType) { case SupportedType.String: return new TextBox { Text = (string)settingValue }; case SupportedType.DateTime: return new MonthPicker { Value = (DateTime)settingValue, ShowUpDown = true }; default: throw new ArgumentOutOfRangeException(string.Format("The supported type value, {0} has no corresponding user control defined.", supportedType)); …


14
在.Net dll中嵌入git commit哈希
我正在使用Cit作为版本控制来构建C#应用程序。 构建应用程序时,有没有一种方法可以自动将最后一个提交哈希值嵌入可执行文件中? 例如,将提交哈希打印到控制台将类似于: class PrintCommitHash { private String lastCommitHash = ?? // What do I put here? static void Main(string[] args) { // Display the version number: System.Console.WriteLine(lastCommitHash ); } } 注意,这必须在构建时而不是运行时完成,因为我部署的可执行文件将无法访问git repo。 有关C ++的相关问题,请参见此处。 编辑 根据@mattanja的请求,我发布了我在项目中使用的git hook脚本。设置: 挂钩是Linux Shell脚本,位于以下位置:path_to_project \ .git \ hooks 如果您使用的是msysgit,则hooks文件夹已经包含一些示例脚本。为了让git调用它们,请从脚本名称中删除扩展名“ .sample”。 挂钩脚本的名称与调用它们的事件相匹配。就我而言,我修改了post-commit和post-merge。 我的AssemblyInfo.cs文件直接位于项目路径下(与.git文件夹相同级别)。它包含23行,我使用git生成第24行。 由于我的linux shell有点生锈,该脚本只是将AssemblyInfo.cs的前23行读取到一个临时文件,将git …
102 c#  git 

2
将枚举转换为List <string>
如何将以下枚举转换为字符串列表? [Flags] public enum DataSourceTypes { None = 0, Grid = 1, ExcelFile = 2, ODBC = 4 }; 我找不到这个确切的问题,这个到列表的枚举是最接近的,但是我特别想要List&lt;string&gt;
102 c#  .net  enums  generic-list 

6
使用C#将SVG转换为PNG [关闭]
关闭。此问题不符合堆栈溢出准则。它当前不接受答案。 想改善这个问题吗?更新问题,使其成为Stack Overflow 的主题。 6年前关闭。 改善这个问题 我一直在尝试使用C#将SVG图像转换为PNG,而不必编写太多代码。谁能推荐这样做的库或示例代码?
102 c#  .net  png  svg 


5
在C#中将double转换为int
在我们的代码中,我们有一个double,需要将其转换为int。 double score = 8.6; int i1 = Convert.ToInt32(score); int i2 = (int)score; 谁能解释我为什么i1 != i2? 我得到的结果是:i1 = 9和i2 = 8。
102 c#  int  double 

1
为什么不能在lambda表达式中使用null传播运算符?
我经常在代码中使用null传播运算符,因为它为我提供了更具可读性的代码,尤其是在长查询中,我不必对使用的每个类进行null检查。 以下代码引发了一个编译错误,我们不能在lambda中使用null传播运算符。 var cnt = humans.AsQueryable().Count(a =&gt; a.House?[0].Price == 5000); 错误 : 错误CS8072表达式树lambda不能包含空传播运算符。 如果确实无法执行其他任何操作,则C#可以轻松地将以上代码转换为以下代码! var cnt = humans.AsQueryable().Count(a =&gt; a.House != null &amp;&amp; a.House[0].Price == 5000); 我很好奇,为什么C#什么都不做,只是抛出编译器错误?

8
C#是操作员的绩效
我有一个需要快速性能的程序。在其内部循环之一中,我需要测试对象的类型,以查看其是否从某个接口继承。 一种方法是使用CLR的内置类型检查功能。最优雅的方法可能是'is'关键字: if (obj is ISpecialType) 另一种方法是为基类提供我自己的虚拟GetType()函数,该函数返回预定义的枚举值(在我的情况下,实际上,我只需要一个布尔值)。该方法将很快,但不太优雅。 我听说有一个专门针对'is'关键字的IL指令,但这并不意味着它在转换为本地程序集时执行速度很快。谁能对“是”与其他方法的性能分享一些见解? 更新: 感谢您提供所有明智的答案!答案中似乎有几个有用的观点:安德鲁(Andrew)关于“是否”自动执行演员表的观点是必不可少的,但Binary Worrier和Ian收集的性能数据也非常有用。如果对其中一个答案进行编辑以包括所有这些信息,那就太好了。
102 c#  performance  clr  gettype 

8
类型或名称空间名称“对象”在名称空间“ System.Data”中不存在
我正在使用实体,C#和SQL Server创建n层应用程序。我正在创建所有DAL组件通用的一些基类。在此基类中,我要处理由实体对象继承的ObjectContext基类的连接状态。 编译将引发以下错误: 类型或名称空间名称“对象”在名称空间“ System.Data”中不存在(您是否缺少程序集引用?) 同样,由于相同的原因,使用语句System.Data.Objects也无法解析。 我尝试将程序集添加为引用,但是在程序集引用的.NET选项卡中找不到它。 有什么想法吗?谢谢!

6
在C#中创建时间戳的函数
我想知道,有没有办法从日期时间在C#中创建时间戳?我需要一个毫秒精度值,该精度值也可以在Compact Framework中使用(假设因为CF中不存在DateTime.ToBinary())。 我的问题是我想以数据库不可知的方式存储此值,以便以后可以对它进行排序并找出另一个值中更大的一个,等等。

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.