2014-01-22 117 views
0

我已經構建了自己的查詢構建器和分析器以供某些用途。
今天工作正常。
我想改變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); 
} 
+0

也許你可以向我們展示一個如何使用'IQueryable'的例子? – Zache

+0

運算符是作爲靜態方法實現的,所以我認爲它不可能成爲界面的一部分。這讓我們在具體類中實現它,或者在界面中創建自定義方法(如And)。 – Caramiriel

+0

你沒有找到我的答案有幫助嗎? –

回答

0

我相信它可能與一些努力來完成。

首先,你知道這些運營商可以超載in a way

條件邏輯運算符不能被重載,但它們使用&和|進行評估,它可以被重載。

其次,你需要一個小技巧才能強制執行重載操作符 - 爲此,請檢查this SO問題。

如果你想知道我的意見,這個努力是不值得你看到它的好處。