例如,参数,object objA,object objB,string relationType,
relationType值:大于,小于,等于,大于等于,小于等于,不等于
最简洁的代码实现C#.
bool Function(object objA,object objB,string relationType)
{
//TODO
}
一起来体验一下Roslyn的威力(install-package Microsoft.CodeAnalysis.CSharp.Scripting):
using Microsoft.CodeAnalysis.CSharp.Scripting;
static void Main(string[] args)
{
Console.WriteLine(Compare(1, 2, "<").Result);
Console.WriteLine(Compare(1, 2, ">").Result);
Console.ReadKey();
}
static async Task<bool> Compare(int x, int y, string relationType)
{
return await CSharpScript.EvaluateAsync<bool>($"{x} {relationType} {y}");
}
参考:
Scripting API Samples
Introduction to Scripting with the .NET Compiler Platform (Roslyn)
还有其他方法吗?动态运算符的方式怎么实现
如果是值类型,直接判断值大小关系就可以了,如果是对象的话,这就不太好做了,除非限定对象和大小规则。
对比大小也是一个功能,一个功能就是一个接口.
所以你的object需要继承对比大小的接口.或者直接使用泛型约束来实现.
感觉这个方向错了吧?.net是可以自己实现Conmpare方法来自己定义大小的。。。