自定义逻辑“和”运算符

时间:2014-01-22 09:50:49

标签: c# operators

我已经构建了自己的查询构建器和解析器以供一些使用 今天工作正常。
我想更改api而不是写.And().Or(),我想写&& ||,就像在IQueryable中一样。
在我的情况下是否可能?:

interface IQ{
     IQ And(IQ q);
     IQ Or(IQ q);
}

class StringQ : IQ{

}
class IntQ : IQ{

}
// this is how I write the query today:
IQ q = new StringQ("a == str").Or(new IntQ("b == 1"));

// I want to write the query - not the || statement
IQ q = new StringQ("a == str") || new IntQ("b == 1")

因此||语句将在其中托管IQ 类似的东西:

interface IQ{
     IQ &&(IQ q);
     IQ ||(IQ q);
}

1 个答案:

答案 0 :(得分:0)

我相信可以通过一些努力来完成。

首先,您知道这些运营商可能会超载in a way

  

条件逻辑运算符不能重载,但使用&值进行评估。和|,可以重载。

其次,你需要一个小技巧来强制执行重载运算符 - 为此,请检查this SO问题。

如果你想知道我的意见,这种努力不值得你在其中看到的好处。