Questions tagged «c#»

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


9
将接收到的对象强制转换为List <object>或IEnumerable <object>
我正在尝试执行以下演员 private void MyMethod(object myObject) { if(myObject is IEnumerable) { List&lt;object&gt; collection = (List&lt;object&gt;)myObject; ... do something } else { ... do something } } 但是我总是以以下例外而告终: 无法转换类型为'System.Collections.Generic.List 1[MySpecificType]' to type 'System.Collections.Generic.List1 [System.Object]'的对象 我真的需要这样做,因为此方法必须非常通用才能接收未指定类型的单个对象和集合。 这可能吗,或者有另一种方法可以做到这一点。 谢谢。
68 c#  .net 

3
ASP.NET MVC绑定到字典
我正在尝试在MVC中绑定字典值。 在动作中,我有: model.Params = new Dictionary&lt;string, string&gt;(); model.Params.Add("Value1", "1"); model.Params.Add("Value2", "2"); model.Params.Add("Value3", "3"); 在视图中,我有: @foreach (KeyValuePair&lt;string, string&gt; kvp in Model.Params) { &lt;tr&gt; &lt;td&gt; &lt;input type="hidden" name="Params.Key" value="@kvp.Key" /&gt; @Html.TextBox("Params[" + kvp.Key + "]") &lt;/td&gt; &lt;/tr&gt; } 但是视图不显示初始值,并且在提交表单时Params属性为null?

11
为什么C#不允许像C ++这样的非成员函数
C#不允许编写非成员函数,并且每个方法都应该是类的一部分。我当时认为这是所有CLI语言的限制。但是我错了,我发现C ++ / CLI支持非成员函数。编译后,编译器将使该方法成为某些未命名类的成员。 这是C ++ / CLI标准所说的, [注:CLI将非成员函数视为某些未命名类的成员;但是,在C ++ / CLI源代码中,此类函数无法使用该类名显式限定。尾注] 未指定元数据中非成员函数的编码。[注意:这不会引起互操作问题,因为此类功能无法公开显示。尾注] 所以我的问题是,为什么C#不实现这样的东西?还是您认为不应该存在非成员函数,并且每个方法都应该属于某个类? 我的意见是拥有非成员函数支持,这有助于避免污染类的接口。 有什么想法吗..?
68 c#  .net  function  c++-cli  clr 

6
在.net中使用FFmpeg?
因此,我知道这是一个相当大的挑战,但是我想使用FFmpeg库在c#中编写一个基本的电影播放器​​/转换器。但是,我需要克服的第一个障碍是将FFmpeg库包装在c#中。我已经下载了ffmpeg,但无法在Windows上对其进行编译,因此我为我下载了预编译的版本。好棒 然后,我开始寻找C#包装器。 我环顾四周,发现了一些包装器,例如SharpFFmpeg(http://sourceforge.net/projects/sharpffmpeg/)和ffmpeg-sharp(http://code.google.com/p/ffmpeg-sharp/)。首先,我想使用ffmpeg-sharp作为LGPL,而SharpFFmpeg是GPL。但是,它有很多编译错误。原来它是为mono编译器编写的,我尝试使用mono编译它,但不知道如何。然后,我自己开始手动修复编译器错误,但遇到了一些令人恐惧的错误,并认为我最好不理会那些错误。所以我放弃了ffmpeg-sharp。 然后我查看了SharpFFmpeg,它看起来像我想要的,所有功能都是P /为我调用的。但是它的GPL?AVCodec.cs和AVFormat.cs文件都看起来像avcodec.c和avformat.c的端口,我认为我可以自己移植?那就不用担心许可问题了。 但是我想在开始编程之前就弄清楚这一点。我是不是该: 编写我自己的C ++库以与ffmpeg进行交互,然后让我的C#程序与C ++库对话以播放/转换视频等。 要么 通过使用大量的DllImports将avcodec.h和avformat.h(是我所需要的吗?)移植到c#并将其完全用C#编写? 首先,考虑到我不太擅长C ++,因为我很少使用它,但我知道足够多,可以绕开它。我之所以认为#1可能是更好的选择,是因为大多数FFmpeg教程都使用C ++编写,并且与使用c#相比,我对内存管理的控制更多。 你怎么看?您还会碰巧有使用FFmpeg的任何有用链接(也许是教程)吗?
68 c#  video  ffmpeg 

6
处理KeyNotFoundException的最佳方法
我正在使用字典为正在处理的程序执行查找。我在字典中运行了一堆键,并且我期望某些键没有值。我抓住KeyNotFoundException它发生的地方,并吸收它。所有其他异常将传播到顶部。这是处理此问题的最佳方法吗?还是应该使用其他查询?字典使用int作为其键,并使用自定义类作为其值。

16
如何从路径中提取每个文件夹名称?
我的路是 \\server\folderName1\another name\something\another folder\ 如果我不知道路径中有多少个文件夹并且不知道文件夹名称,如何将每个文件夹名称提取为字符串? 非常感谢
68 c#  string 

16
在C#中旋转列表的最简单方法
列表说我有一个列表 List&lt;int&gt; {1,2,3,4,5} 旋转意味着: =&gt; {2,3,4,5,1} =&gt; {3,4,5,1,2} =&gt; {4,5,1,2,3} 也许轮换不是最好的选择,但希望您理解我的意思 我的问题是,最简单的方法是什么(简而言之,C#4 Linq已准备就绪),并且不会受到性能(合理的性能)的影响 谢谢。
68 c#  arrays  linq  list 

8
使用数据注释的条件必需属性
我有一个这样的课: public class Document { public int DocumentType{get;set;} [Required] public string Name{get;set;} [Required] public string Name2{get;set;} } 现在,如果我[Required]在Name和Name2属性上添加数据注释,则一切正常,如果Name或Name2为空,则验证将引发错误。 但我希望Name仅在DocumentType等于1Name2时才需要字段,而在等于2时才需要字段DocumentType。 public class Document { public int DocumentType{get;set;} [Required(Expression&lt;Func&lt;object, bool&gt;&gt;)] public string Name{get;set;} [Required(Expression&lt;Func&lt;object, bool&gt;&gt;)] public string Name2{get;set;} } 但我知道我做不到,这会导致错误。我该怎么办?



3
如何使用HttpClient发布数据?
我从Nuget获得了这个HttpClient。 当我想获取数据时,可以这样: var response = await httpClient.GetAsync(url); var data = await response.Content.ReadAsStringAsync(); 但是问题是我不知道如何发布数据?我必须发送一个发布请求,并在其中发送以下值:comment="hello world"和questionId = 1。我不知道这些可以是类的属性。 更新我不知道如何将这些值添加到HttpContent后方法需要它。httClient.Post(string, HttpContent);

4
使用Unity如何将命名依赖项注入到构造函数中?
我IRespository在以下代码中两次注册了(带有名称): // Setup the Client Repository IOC.Container.RegisterType&lt;ClientEntities&gt;(new InjectionConstructor()); IOC.Container.RegisterType&lt;IRepository, GenericRepository&gt; ("Client", new InjectionConstructor(typeof(ClientEntities))); // Setup the Customer Repository IOC.Container.RegisterType&lt;CustomerEntities&gt;(new InjectionConstructor()); IOC.Container.RegisterType&lt;IRepository, GenericRepository&gt; ("Customer", new InjectionConstructor(typeof(CustomerEntities))); IOC.Container.RegisterType&lt;IClientModel, ClientModel&gt;(); IOC.Container.RegisterType&lt;ICustomerModel, CustomerModel&gt;(); 但是,当我想解决此问题(使用IRepository)时,我必须像这样手动解决: public ClientModel(IUnityContainer container) { this.dataAccess = container.Resolve&lt;IRepository&gt;(Client); ..... } 我想做的是在构造函数中解析它(就像IUnityContainer)。我需要某种方式说出要解决的命名类型。 这样的事情:(注意:不是真实的代码) public ClientModel([NamedDependancy("Client")] IRepository dataAccess) { this.dataAccess = dataAccess; ..... …

9
为什么StyleCop建议给前缀方法或属性调用加上“ this”?
我一直在尝试在项目上遵循StyleCop的准则,以查看最终的代码是否更好。大多数规则是合理的,或者是关于编码标准的观点,但是有一个规则使我感到困惑,因为我没有看到其他人推荐它,也没有看到明显的好处: SA1101:对{方法或属性名称}的调用必须以'this'开头。前缀,指示该项目是该类的成员。 不利的一面是,代码显然更冗长,所以遵循该规则有什么好处?这里有人遵守这个规则吗?

7
对PictureBox的透明控制
在我的C#表单中,我有一个在下载事件中显示下载百分比的标签: this.lblprg.Text = overallpercent.ToString("#0") + "%"; Label控件的BackColor属性设置为透明,我希望将其显示在PictureBox上。但这似乎无法正常工作,我看到的是灰色背景,在图片框顶部看起来不透明。我怎样才能解决这个问题?
68 c#  background  label 

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.