小编Cod*_*ain的帖子

如何将String转换为其等效的LINQ表达式树?

这是原始问题的简化版本.

我有一个名为Person的类:

public class Person {
  public string Name { get; set; }
  public int Age { get; set; }
  public int Weight { get; set; }
  public DateTime FavouriteDay { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

......然后说一个例子:

var bob = new Person {
  Name = "Bob",
  Age = 30,
  Weight = 213,
  FavouriteDay = '1/1/2000'
}
Run Code Online (Sandbox Code Playgroud)

我想在我最喜欢的文本编辑器中将以下内容写成字符串 ....

(Person.Age > 3 AND Person.Weight > 50) OR Person.Age < 3
Run Code Online (Sandbox Code Playgroud)

我想取这个字符串和我的对象实例并评估一个TRUE或FALSE - 即在对象实例上评估一个Func <Person,bool>.

这是我目前的想法:

  1. 在ANTLR中实现基本语法以支持基本比较和逻辑运算符.我想在这里复制Visual Basic优先级和一些功能集:http://msdn.microsoft.com/en-us/library/fw84t893(VS.80).aspx
  2. 让ANTLR从提供的字符串中创建合适的AST. …

c# dsl lambda antlr predicate

164
推荐指数
4
解决办法
8万
查看次数

了解事件驱动架构的良好资源

寻找书籍,博客,网站或视频.

目前,我从Udi Dahan和Greg Young的博客中获得了很多价值,但我想知道是否还有其他专家值得一试?

architecture messaging soa event-driven eda

27
推荐指数
1
解决办法
5094
查看次数

高可用性

无论如何,如果主端点死亡,是否有配置故障转移端点的WCF服务?有点像能够在SQL集群中指定故障转移服务器.

具体来说,我使用TCP/IP绑定来提高速度,但是在极少数情况下机器不可用我想将流量重定向到故障转移服务器.丢失消息并不是太麻烦.我只是不想编写代码来处理重新路由.

.net c# wcf soa

18
推荐指数
1
解决办法
3386
查看次数

.NET MVC在另一个控制器中实例化控制器

ASP.NET MVC控制器是否有可能创建不同控制器的新实例并有效地将其重新委托给它?

比方说,我在/ Controllers /目录中有两个控制器:

public class HomeController : Controller
{
    public ActionResult Index()
    {
            var otherController = new OtherController();
            return otherController.ShowNumberOfThings(100);
    }
}

public class OtherController : Controller
{
        public ActionResult ShowNumberOfThings(int index)
        {
            return View(index);
        }
}
Run Code Online (Sandbox Code Playgroud)

...和一个名为Views/Other/ShowNumberOfThings.aspx的视图:

<%@ Page Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="ViewPage<int>" %>
Number of things: <%= Model.ToString() %>
Run Code Online (Sandbox Code Playgroud)

当我点击网址时:

HTTP://本地主机/首页/索引

我希望看到一个页面:

"事情数量:100"

我希望能够在控制器重定向之间保留临时数据,而不必强制使用会话对象(TempData [""]使用会话对象进行跨控制器重定向).我的真实案例有一个复杂的对象需要传递(不仅仅是一个int),所以使用URL/Cookie是不可能的,会话状态是禁止的.

在WebForms中,我们至少可以使用Server.Transfer并维护HttpContext.Items集合中的任何状态.在MVC中,我能看到的唯一选择是直接调用控制器方法传递必需的参数.

目前,由于"上下文"仍在HomeController下运行,因此无法尝试解析视图文件夹.

我想我要去的地方就是试图将ASP.NET MVC搞得像FrontContoller一样.

有任何想法吗?

编辑

最后,我们必须将所有内容序列化为一个会话并使用它.遗憾,但我听说MVC2将支持将对象序列化为ViewState.

asp.net-mvc controller

7
推荐指数
1
解决办法
6102
查看次数

多线程同步列表<T>

我有一个要求,我需要存储一个项目列表的简单缓存.我正在使用List <T>来实现此目的,但我们现在已经改变了设计以适应多个线程.

系统的体系结构由事件驱动,因此读写操作很可能会发生冲突.由于绝大多数访问都是只读的,我认为ReaderWriterLockSlim可能是一个很好的候选者.缓存只需要在该时刻的读取点准确.

我已经编写了下面的代码,似乎工作正常,但是有一些潜在的痛点吗?

更新:虽然下面的代码确实解决了一些同步问题,但它并非100%完美.我已经决定实现一个更简单的类,它不会暴露所有的IList <T>操作,因此重新使用它会更"安全".

public class SynchronisedList<T> : IList<T>
{
    private ReaderWriterLockSlim cacheLock = new ReaderWriterLockSlim();
    private IList<T> innerCache = new List<T>();

    private U ReadReturn<U>(Func<U> function)
    {
        cacheLock.EnterReadLock();
        try { return function(); }
        finally { cacheLock.ExitReadLock(); }
    }

    private void Read(Action action)
    {
        cacheLock.EnterReadLock();
        try { action(); }
        finally { cacheLock.ExitReadLock(); }
    }

    private U WriteReturn<U>(Func<U> function)
    {
        cacheLock.EnterWriteLock();
        try { return function(); }
        finally { cacheLock.ExitWriteLock(); }
    }

    private void Write(Action action)
    {
        cacheLock.EnterWriteLock();
        try { action(); …
Run Code Online (Sandbox Code Playgroud)

c# generics multithreading list

5
推荐指数
1
解决办法
6713
查看次数