我有以下代码:确定λ-表达的返回类型
public class ScriptRuntime {
public R Execute<T, R>(Expression<Func<T, R>> expression) {
// ... do something ...
return default(R);
}
}
我这样称呼它
var loc = AddIn.Context.ScriptRuntime.Execute<IAgentBaseScript, Vector3?>(x => x.GetInitialLocation(this));
我问我,如果是删除的的定义可能性返回类型R
,而应该只从表达式中获取?
例如当我打电话
var loc = AddIn.Context.ScriptRuntime.Execute<IAgentBaseScript>(x => x.GetInitialLocation(this));
并且因为接口IAgentBaseScript
看起来像
public interface IAgentBaseScript {
Place GetInitialPlace(AgentBase agent);
Vector3? GetInitialLocation(AgentBase agent);
}
它理论上应该是明确的,即返回类型是Vector3
因为它始终是相同的表达。