如何在MemoryCache上分离对象引用

我目前正在试用.Net 4中的新MemoryCache来缓存我们的一个应用程序中的一些数据。 我遇到的麻烦是对象被更新,缓存似乎是持久的变化,例如 public IEnumerable GetFromDatabase(){ const string _cacheKeyGetDisplayTree = “SomeKey”; ObjectCache _cache = MemoryCache.Default; var objectInCache = _cache.Get(_cacheKeyGetDisplayTree) as IEnumerable; if (objectInCache != null) return objectInCache.ToList(); // Do something to get the items _cache.Add(_cacheKeyGetDisplayTree, categories, new DateTimeOffset(DateTime.UtcNow.AddHours(1))); return categories.ToList(); } public IEnumerable GetWithIndentation(){ var categories = GetFromDatabase(); foreach (var c in categories) { c.Name […]

无法处理消息,因为内容类型为’application / json; charset = utf-8’不是预期的类型’text / xml; 字符集= UTF-8′

通过ajax json调用WCF服务时,我得到了上述响应。 我的主叫代码是: $(document).ready(function () { $.ajax ({ type: “POST”, contentType: “application/json; charset=utf-8”, url: “http://localhost:90/WebServices/UserService.svc/Calculate”, data: “{}”, timeout: 10000, dataType: “json”, success: function (response) { alert(response) }, error: function (xhr, ajaxOptions, thrownError) { alert(xhr.statusText); alert(thrownError); } }); }); 我的服务是: [ServiceContract] public interface IUserService { [OperationContract] [WebInvoke(Method = “POST”, BodyStyle = WebMessageBodyStyle.Wrapped, ResponseFormat = WebMessageFormat.Json )] […]

如何安全地混合同步和异步代码?

我有这个纯粹同步的库。 它暴露了同步方法,我有客户端使用它。 对于想要使用它的人,我将底层实现更改为异步和公开的异步方法。 但现在我有很多复制代码。 异步代码似乎表现更好。 我希望现有客户能够利用它,我想消除代码重复。 有没有安全的方法来保持同步签名和调用异步实现? 在打电话时我特别害怕死锁.Result和.Wait。

带参数的Getter属性

我想我以前见过某个地方,但现在我不记得都找不到它,有没有办法用参数制作一个getter属性? 我的意思是,因为我可以转换“float getSize();” 到“浮动大小” float getSize() { return this.size; } float Size { get { return this.size; } } 然后,我可以转换为例如“float getSize(String unit);” “浮动大小(字符串单位)”或类似的东西? float getSize(String unit) { return this.size; } float Size(String unit) { get { if (unit == Unit.Meters) return this.size/100; else return this.size; } } 我认为根本没有使用function的问题,但这样看起来可能更好:P

计算生日剩余的天数?

我有一个人的生日的DateTime对象。 我使用人的年,月和出生日创建此对象,方法如下: DateTime date = new DateTime(year, month, day); 我想知道在这个人下一个生日之前剩下多少天。 在C#中这样做的最佳方法是什么(我是语言新手)?

ASP.NET MVC 3是否已准备好用于业务应用程序

我必须决定我们将在未来几年开发的新的大型业务应用程序,问题是我们是否应该开始使用MVC 3或Web表单。 这已经在SO中进行了讨论,但我已经看到了这样一个问题: ASP.NET MVC是否适用于业务应用程序(集成第三方控件/组件)? 在2008年被问到,现在很多事情都可能发生变化。 我主要关注的是听说MVC适合渲染像网格或列表这样的内容,而不太适合数据输入和用户交互。 我们的应用程序将有很多控件,用户可以在其中输入数据并使用列表和文本框,复选框等。 在MVC或经典的Webforms和视图状态模型中,一切都绝对可能更合适吗? 谢谢。

为什么Postfix ++ / – 在C#中被归类为主要操作符?

目前我正在教授一类C ++程序员C#语言的基础知识。 当我们讨论主题运算符时,我使用C#标准类别的主要,一元等操作符。 其中一位与会者感到困惑,因为在C#标准中,“postfix ++ / – ”已经被置于主要运营商的类别而不是“前缀++ / – ”。 她混淆的理由是,她宁愿用运算符“prefix ++ / – ”来实现C ++运算符“postfix ++ / – ”。 换句话说,她宁愿将运算符“prefix ++ / – ”视为主要运算符。 – 我理解她的观点,但我不能给她一个理由。 好吧,运营商“postfix ++ / – ”的优先级高于“前缀++ / – ”,但这背后的唯一理由是什么? 规范在“14.2.1运算符优先级和关联性”一节中提到了它。 所以我非常中立的问题:为什么Postfix ++ / – 在C#中被归类为主要操作符? 它有更深层次的真相吗?

受保护的只读字段与受保护的属性

我有一个抽象类,我想在其受保护的构造函数中初始化一个只读字段。 我希望这个readonly字段在派生类中可用。 我习惯于将所有字段设为私有并暴露属性,我实现如下: abstract class Foo { private readonly int _field; protected Foo(int field) { _field = field; } protected int Field { get { return _field; } } } 但后来我想知道在这里保持这个领域是否真的有很多好处。 我知道属性的优点,一般来说这个问题有几个SO问题,但它们关注的是公共领域而不是受保护领域。 那么我应该切换到以下实现吗? 在任何一种情况下,要注意哪些因素和优点/缺点? abstract class Foo { protected readonly int _field; protected Foo(int field) { _field = field; } }

如何在C#中的combobox中按值找到项目?

在C#中,我有a类型string变量a 。 如何在combobox找到a的值(我想找到值没有combobox的显示文本的项目)。

连接多个IEnumerable

我正在尝试实现一个连接多个List的方法,例如 List l1 = new List { “1”, “2” }; List l2 = new List { “1”, “2” }; List l3 = new List { “1”, “2” }; var result = Concatenate(l1, l2, l3); 但我的方法不起作用: public static IEnumerable Concatenate(params IEnumerable List) { var temp = List.First(); for (int i = 1; i < List.Count(); i++) […]