Tag: C# 4.0

如何将Dynamic方法调用作为DynamicMetaObject.BindInvokeMember的结果来表示?

我正在尝试深入介绍C#的第二版IDynamicMetaObjectProvider一个简短的例子,我遇到了问题。 我想能够expression一个无效的电话,而我失败了。 我敢肯定,这是可能的,因为如果我dynamic调用使用reflection粘合剂的void方法,一切都很好。 这里有一个简短而完整的例子: using System; using System.Dynamic; using System.Linq.Expressions; class DynamicDemo : IDynamicMetaObjectProvider { public DynamicMetaObject GetMetaObject(Expression expression) { return new MetaDemo(expression, this); } public void TestMethod(string name) { Console.WriteLine(name); } } class MetaDemo : DynamicMetaObject { internal MetaDemo(Expression expression, DynamicDemo demo) : base(expression, BindingRestrictions.Empty, demo) { } public override DynamicMetaObject BindInvokeMember (InvokeMemberBinder binder, […]

为什么C#dynamictypes是静态的?

在读取和浏览dynamic关键字时,我在[MSDN](在使用typesdynamic(C#编程指南) )中find以下行: 该types是静态types,但dynamictypes的对象绕过了静态types检查。 在大多数情况下,它具有types对象的function。 静态在上面的含义是什么,它如何绕过静态types检查?

如何在WebApi中添加和获取Header值

我需要在WebApi中创build一个POST方法,所以我可以从应用程序发送数据到WebApi方法。 我无法获得标题值。 在这里,我在应用程序中添加了标题值: using (var client = new WebClient()) { // Set the header so it knows we are sending JSON. client.Headers[HttpRequestHeader.ContentType] = "application/json"; client.Headers.Add("Custom", "sample"); // Make the request var response = client.UploadString(url, jsonObj); } 遵循WebApi发布方法: public string Postsam([FromBody]object jsonData) { HttpRequestMessage re = new HttpRequestMessage(); var headers = re.Headers; if (headers.Contains("Custom")) { string […]

使用DataContractSerializer来序列化,但不能反序列化

我有以下两个function: public static string Serialize(object obj) { DataContractSerializer serializer = new DataContractSerializer(obj.GetType()); MemoryStream memoryStream = new MemoryStream(); serializer.WriteObject(memoryStream, obj); return Encoding.UTF8.GetString(memoryStream.GetBuffer()); } public static object Deserialize(string xml, Type toType) { MemoryStream memoryStream = new MemoryStream(Encoding.UTF8.GetBytes(xml)); // memoryStream.Position = 0L; XmlDictionaryReader reader = XmlDictionaryReader.CreateTextReader(memoryStream, Encoding.UTF8, new XmlDictionaryReaderQuotas(), null); DataContractSerializer dataContractSerializer = new DataContractSerializer(toType); return dataContractSerializer.ReadObject(reader); } […]

场与财产。 性能优化

请注意这个问题只与性能有关。 让我们跳过devise指南,哲学,兼容性,可移植性以及任何与纯粹性能无关的东西。 谢谢。 现在的问题。 我一直认为,因为C#getters / setter实际上是伪装的方法,所以阅读public字段必须比调用getter更快。 所以要确保我做了一个testing(下面的代码)。 但是, 如果您在Visual Studio中运行该testing,则此testing只会产生预期的结果(即字段比34%的获得者更快 )。 一旦你从命令行运行它显示几乎相同的时间… 唯一的解释可能是CLR做了额外的优化(纠正我,如果我在这里是错的)。 我不相信在实际的应用中,这些属性以更复杂的方式被使用,它们将以相同的方式被优化。 请帮助我certificate或反驳现实生活中属性比田野慢的观点。 问题是 – 我应该如何修改testing类来使CLR更改行为,使公共领域超越获取者。 或者告诉我,没有内部逻辑的任何属性将会像字段一样执行(至less在getter上) 编辑:我只谈论版本x64构build。 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Diagnostics; using System.Runtime.InteropServices; namespace PropertyVsField { class Program { static int LEN = 20000000; static void Main(string[] args) { List<A> a = new List<A>(LEN); List<B> […]

如何检查string值是否在枚举列表中?

在我的查询string中,我有一个年龄variables?age=New_Born 。 有没有一种方法可以检查这个string值New_Born是否在我的枚举列表中 [Flags] public enum Age { New_Born = 1, Toddler = 2, Preschool = 4, Kindergarten = 8 } 我现在可以使用if语句,但是如果我的Enum列表变大了。 我想find一个更好的方法来做到这一点。 我正在考虑使用Linq,只是不知道该怎么做。

如何指定一个短整型常量而不铸造?

有没有办法指定我的variables是一个短整型? 我正在寻找类似于M后缀小数的东西。 对于小数,我不必说 var d = (decimal)1.23; 我只能写如下: var d = 1.23M; 有没有办法写这个 var s = SomeLiteralWithoutCast 所以这意味着短int?

WPF或Windows窗体

我一直在玩C#控制台应用程序大约一年,我想继续创buildGUI应用程序。 除了基本的Java应用程序,我从来没有做过任何GUI开发,但是我想继续使用C#。 我应该开始学习Windows窗体还是直接跳到WPF? 有一个巨大的差异? WPFbuild立在Windows窗体之上还是完全不同?

Visual Studio 2010:如何在解决scheme中执行项目的构build顺序?

我在Visual Studio 2008中没有任何问题,但VS 2010似乎有问题,我打赌这可能是我。 我有一个ASP.NET网站项目和一些C#项目(BLL,DAL,NUnit中的testing)的解决scheme。 我已经为testing项目configuration了构build过程来自动运行NUnit来运行testing。 我想确保在testing项目之前build立BLL和DAL项目,以便testing能够运行在最新的编译版本上(是的,我知道我可以在一个项目中完成这一切,但是我select不要 – 请多多包涵 :) ) 因此,我将Test项目的依赖项设置为包含BLL,DAL和Web应用程序项目,构build顺序显示BLL,DAL,Web应用程序,然后是testing。 但是,我注意到BLL实际上并没有构buildtesting项目。 任何想法这可能是什么,或者我可能会失去的任何选项强制其他项目build立时,我build立testing项目? 提前感谢任何帮助!

如何检查一个属性是否存在于c#中的dynamic匿名types?

我有一个匿名types的对象,我收到一个方法,我想检查该对象上存在的属性的dynamic。 …. var settings = new { Filename="temp.txt", Size=10 } … function void Settings(dynamic settings) { var exists = IsSettingExist(settings,"Filename") } 我将如何实现IsSettingExist?