Bea*_*ker 6 c# lambda delegates spring.net
是否可以动态创建委托
arg => { return something; }
or arg => someting;
Run Code Online (Sandbox Code Playgroud)
使用内置的DelegateFactoryObject和Spring.Net提供的Spring Expressions?
我想创建没有编码的工厂.spring文档中的抽象示例需要一个抽象工厂,并通过动态配置实现工厂方法.我想通过Spring.Net定义委托和结果.
我已经使用了如下构造.
<object type="Spring.Objects.Factory.Config.DelegateFactoryObject">
<property name="DelegateType" value="System.Func<string,bool>" />
<property name="TargetObject" value="aString" />
<property name="MethodName" value="Equals" />
</object>
<object type="Spring.Objects.Factory.Config.DelegateFactoryObject">
<property name="DelegateType" value="System.Func<string,My.Interface>" />
<property name="TargetObject">
<object id="result" type="My.DelegateContainer<string,My.Interface>">
<constructor-arg name="objectToReturn" ref="theObjectToReturn" />
</object>
</property>
<property name="MethodName" value="Evaluate" />
</object>
Run Code Online (Sandbox Code Playgroud)
(输入字符串并输出My.Interface实现类型,传递ObjectToReturn)
...但我无法找到如何使用表达式来定义通过xml-config返回对象的函数的解决方案.我想在一个简单的配置定义工厂中替换此示例中的DelegateContainer,返回ObjectToReturn.
这个问题与这个问题有关:如何在Spring.net中注入Predicate和Func,你可以在那里找到关于这个问题的更多信息.
小智 1
我相信您正在尝试使用委托异步调用方法,如果是这样,您可以使用以下任何方法来使用异步调用作为委托来调用函数:
Action act = () =>
{
//Function Body
};
//call
act();
Action<Action> act2 = (x) =>
{
//Function Body
};
//call
act2(() => { });
var tsk = Task.Factory.StartNew(() => {
//Function Body
});
//call
tsk.Wait();
Parallel.Invoke(() => {
//Function Body
}, () => {
//Function Body
});
Run Code Online (Sandbox Code Playgroud)
最后,您可以使用 Func<> 如下:
Func<string, int, string> sayHello = delegate(string name, int age)
{
return string.Format("my name is {0} and I'm {1} years old.", name, age.ToString());
};
Run Code Online (Sandbox Code Playgroud)
希望这能有所帮助,最好。
| 归档时间: |
|
| 查看次数: |
808 次 |
| 最近记录: |