c# - Spring.NET - 作为依赖项的 Lambdas - 可能使用 XML?

标签 c# .net lambda spring.net

我知道 Spring.NET 支持“Spring 表达式”——在运行时作为代码解析的文本——并且它们可以在您的 XML 配置中声明。

但您能否定义一个 lambda 表达式,并将其解析并用作代码中的强类型委托(delegate),例如,作为构造函数参数?

像这样:

<object name="Page1To2Transition"
    type="XmlVsDslConfig.PageTransition, XmlVsDslConfig">
  <constructor-arg type="string" value="Page1-Page2"/>
  <constructor-arg ref="Page1"/>
  <constructor-arg ref="Page2"/>
  <property name="CanTransition" expression="#CanTransition = {|p| true }"/>
</object>

PageTransition 构造函数如下所示:

public PageTransition ( 
    String name, 
    Page from, 
    Page to, 
    Func<Page, bool> canTransition )
{/*...*/}

最佳答案

据我所知,直接使用 Spring.net 表达式是不可能的。也许您可以使用 Spring.net 的内置 DelegateFactoryObject 解决通过 xml-config 将委托(delegate)传递给构造函数/属性的问题。

  <object type="Spring.Objects.Factory.Config.DelegateFactoryObject, Spring.Core"> 
    <property name="DelegateType" value="System.Action"/> 
    <property name="TargetObject" ref="MyTarget" /> 
    <property name="MethodName" value="MyDelegate" /> 
  </object>

这将创建一个 Action 类型的委托(delegate)。您还可以创建任何其他类型的委托(delegate)(只需在名为“DelegateType”的属性中指定类型(包括您要求的 Func 委托(delegate))。

也许您可以将它与表达式结合使用以获得您需要的结果。

关于c# - Spring.NET - 作为依赖项的 Lambdas - 可能使用 XML?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5688405/

相关文章:

c# - 为什么从 C# 应用程序代码调用 Powershell 时返回 null?

c# - 条件 LINQ where 语句?

android - 使用 Kotlin 在 Android 中测试 lambda 函数

.net - MS SQL 数据库架构更改而不丢失数据

python - 如何使用 Python 检索 AWS Lambda 公共(public) IP 地址?

c# - 在 Wpf 中,如何将命令从按钮发送到子控件?

c# - 使用 XmlSerializer 获取列表时可以省略干预级别吗?

c# - 添加连接时 Visual Studio 不显示服务器名称

c# - 在我的数据库中更改 FK 的级联行为时需要更新模型吗?

c# - 解压缩 gzipstream 时出错——GZip header 中的魔数(Magic Number)不正确