Tag: C#的

使用Json.Net序列化时指定自定义date时间格式

我正在开发一个API来使用ASP.NET Web API公开一些数据。 在其中一个API中,客户希望我们以yyyy-MM-dd格式公开date。 我不想更改全局设置(例如GlobalConfiguration.Configuration.Formatters.JsonFormatter ),因为它是非常特定于此客户端。 而且我也在为多个客户开发解决scheme。 我能想到的解决scheme之一是创build一个自定义的JSON转换器,然后把它的属性,我需要做的自定义格式 例如 class ReturnObjectA { [JsonConverter(typeof(CustomDateTimeConverter))] public DateTime ReturnDate { get;set;} } 只是想知道是否有一些其他简单的方法做到这一点。

手动创build委托与使用Action / Func委托

今天我正在考虑宣布: private delegate double ChangeListAction(string param1, int number); 但为什么不使用这个: private Func<string, int, double> ChangeListAction; 或者如果ChangeListAction没有返回值我可以使用: private Action<string,int> ChangeListAction; 那么在使用delegate关键字声明委托的优势在哪里呢? 是因为.NET 1.1,而.NET 2.0来了Action<T>和.NET 3.5来了Func<T> ?

为什么我们不能声明一个std :: vector <AbstractClass>?

在C#中花了相当长的时间开发之后,我注意到如果为了将其用作接口而声明抽象类,则不能实例化此抽象类的向量来存储子类的实例。 #pragma once #include <iostream> #include <vector> using namespace std; class IFunnyInterface { public: virtual void IamFunny() = 0; }; class FunnyImpl: IFunnyInterface { public: virtual void IamFunny() { cout << "<INSERT JOKE HERE>"; } }; class FunnyContainer { private: std::vector <IFunnyInterface> funnyItems; }; 在MS VS2005中声明抽象类向量的行会导致这个错误: error C2259: 'IFunnyInterface' : cannot instantiate abstract class 我看到一个明显的解决方法,即用下面的代替IFunnyInterface: […]

在编译时未定义对boost :: system :: system_category()的引用

我正在尝试使用Boost库在Ubuntu 11.10上编译一个程序。 我安装了Ubuntu Repository的1.46-dev Boost库,但在编译程序时出现错误。 undefined reference to boost::system::system_category() 我做错了什么?

.NET框架中的并发HashSet <T>

我有以下class级。 class Test{ public HashSet<string> Data = new HashSet<string>(); } 我需要从不同的线程更改字段“数据”,所以我想对我目前的线程安全实现一些意见。 class Test{ public HashSet<string> Data = new HashSet<string>(); public void Add(string Val){ lock(Data) Data.Add(Val); } public void Remove(string Val){ lock(Data) Data.Remove(Val); } } 有没有更好的解决scheme,直接去现场,并保护它从multithreading并发访问?

静态索引器?

为什么在C#中不允许使用静态索引器? 我看不出为什么他们不应该被允许,而且他们可能是非常有用的。 例如: static class ConfigurationManager { public object this[string name]{ get{ return ConfigurationManager.getProperty(name); } set { ConfigurationManager.editProperty(name, value); } } /// <summary> /// This will write the value to the property. Will overwrite if the property is already there /// </summary> /// <param name="name">Name of the property</param> /// <param name="value">Value to be wrote (calls […]

是否可以重写一个非虚方法?

有没有办法来重写一个非虚拟的方法? 或者类似的结果(除了创build一个新的方法来调用所需的方法)? 我想重写一个来自Microsoft.Xna.Framework.Graphics.GraphicsDevice的方法,考虑到unit testing。

如何确保使用JSON.NET的string是有效的JSON

我有一个原始的string。 我只是想validationstring是否是有效的JSON。 我正在使用JSON.NET。

如何在C#中序列化一个exception对象?

我想在C#中序列化一个exception对象。 但是,由于Exception类没有标记为[Serializable] ,所以这是不可能的。 有没有办法解决这个问题? 如果在应用程序执行过程中出现问题,我想通知发生的exception。 我的第一个反应是序列化它。

我怎样才能得到列表<T>中的每一个项目?

我正在使用.NET 3.5,并希望能够获得列表中的每个* n *项。 我不关心它是否使用lambdaexpression式或LINQ来实现。 编辑 看起来这个问题引起了很多辩论(这是一件好事,对吧?)。 我学到的主要事情是,当你认为你知道每一种做法(即使这样简单),再想一想!