例如:
using System.Collections.Generic;
public static void MyMethod( Dictionary<dynamic, dynamic> table /* ... more args ... */ )
{
// Inside this method body, I want to get the caller expression (that is GetDynamicDictionaryValue() in this case), not the value of 'table' parameter.
}
在另一个文件中,我调用上面的方法(MyMethod):
using System.Collections.Generic;
public static Dictionary<dynamic, dynamic> GetDynamicDictionaryValue()
{
// This returns dynamic dictionary...
}
public static void Main( string[] args )
{
// This is the caller to MyMethod.
MyMethod( table: GetDynamicDictionaryValue() /* ... */ );
}
(我在上面写了示例代码而没有测试它。如果有任何错误,我会修复它们。)
答案 0 :(得分:1)
你不能通过值传递C#中的参数,并且方法无法知道如何计算特定参数。
您可以改为传递计算参数或Expression
的函数来自己构建它(类似于LINQ-to-SQL)。
示例显示如何传递函数:
public static void MyMethod( Func<Dictionary<dynamic, dynamic>> tableArgCreator,
/* ... more args ... */ )
{
var table = tableArgCreator();
...
}
MyMethod( table: GetDynamicDictionaryValue, /* ... */ );