| 运算符 |
描述 |
| + |
Add |
| & |
And |
| && |
AndAlso |
| / |
Divide |
| == |
Equal |
| ^ |
ExclusiveOr |
| > |
GreaterThan |
| >= |
GreaterThanOrEqual |
| << |
LeftShift |
| < |
LessThan |
| <= |
LessThanOrEqual |
| . |
MemberAccess |
| % |
Modulo |
| * |
Multiply |
| ! |
Not |
| != |
NotEqual |
| | |
Or |
| || |
OrElse |
| >> |
RightShift |
| - |
Subtract |
| ?? |
Coalesce a??b |
| [i] |
ArrayIndex |
| 关键词 |
描述 |
| as |
TypeAs |
| is |
TypeIs |
null,sbyte,byte,char,short,ushort,int,uint,long,ulong,float,double,decimal,bool,true,false
public class CompileEngineTest
{
[Fact]
public void Compile_Bool()
{
var exe = CompileEngine.Compile<Func<object, bool>>("Id==1");
bool result = exe.Invoke(new { Id = 1 });
Assert.True(result);
}
[Fact]
public void Compile_Bool_WithNoParamters()
{
var exe = CompileEngine.Compile<Func<bool>>("1==1");
bool result = exe.Invoke();
Assert.True(result);
}
[Fact]
public void Compile_Bool_IsNotNull()
{
var exe = CompileEngine.Compile<Func<object, bool>>("Name!=null");
bool result = exe.Invoke(new
{
Name = "SmartExpression"
});
Assert.True(result);
}
[Fact]
public void Compile_Bool_NestIsNotNull()
{
var exe = CompileEngine.Compile<Func<object, bool>>("Who.Name!=null");
bool result = exe.Invoke(new
{
Who = new
{
Name = "SmartExpression"
}
});
Assert.True(result);
}
[Fact]
public void Compile_Bool_Array()
{
var exe = CompileEngine.Compile<Func<object, bool>>("Ids.Length==3 and Ids[0]==1");
bool result = exe.Invoke(new
{
Ids = new long[] { 1, 2, 3 }
});
Assert.True(result);
}
[Fact]
public void Compile_Bool_NestBlock()
{
var exe = CompileEngine.Compile<Func<object, bool>>("Ids!=null && (Ids.Length==3 && Ids[0]==1) && Name!=null");
bool result = exe.Invoke(new
{
Ids = new long[] { 1, 2, 3 },
Name = "SmartExpression"
});
Assert.True(result);
}
[Fact]
public void Compile_Int()
{
var exe = CompileEngine.Compile<Func<int>>("1+1");
int result = exe.Invoke();
Assert.Equal(2, result);
}