gpt4 book ai didi

c# - 是否有可能在 C# 中提供 IComparer 实现并以某种方式在运行时将其 "compiled"放入应用程序中?

转载 作者:太空宇宙 更新时间:2023-11-03 16:30:25 25 4
gpt4 key购买 nike

大家好,我不确定我想做的事情是否可行,但我会尽力解释它,非常感谢任何建议/想法,

假设我有:-

    public class Attribute{
object Value;
**(X1)**IComparer<T> comparer
}
public class AttributeValues
{
List<Attribute> values;
SortedList<Attribute> Sort(){
this uses the comparer defined in **(X1)** to sort the values in the list
}
}

这些类允许用户创建用户定义的属性并选择预定义的排序算法对值进行排序在最简单的情况下,我可以使用我在用户选择的源代码中创建和编译的比较器之一来执行 AttributesValues.Sort()。如果预先知道比较(例如简单的按字母顺序升序排序),这很好。

但是,有些情况下需要更多的逻辑并且事先并不知道。例如,字符串“4DFG5ET”可能编码了一个需要排序的日期,可能还有其他具有类似逻辑的属性等等。

如果可能的话,我不想继续编写 IComparer 实现,并且希望能够以某种方式在运行时在文本框或文件中定义 IComparer 实现,并且它会以某种方式在程序中编译或持久化然后在可用于对属性进行排序的比较选择中可用。

有人对如何解决这个问题有什么建议吗?

请询问您是否希望我澄清一些事情,因为我知道这是一个有点晦涩的问题。

提前致谢

亚历克斯

最佳答案

当然,有几种不同的技术支持这一点。 Reflection.Emit 浮现在脑海中,由于 .NET 框架包含一个编译器,您还应该能够发出 C# 并将其即时编译为您随后加载的程序集。我相信在新的动态语言空间中有更多选择。

关于c# - 是否有可能在 C# 中提供 IComparer 实现并以某种方式在运行时将其 "compiled"放入应用程序中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11004235/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com