我需要创建一个 CSV 样式的参数字符串,映射到它们的值。例如:
static void MyMethod(int i, string str, object obj, bool flag)
{
string example = "i=123,str=Hello,obj=1.0,flag=false";
}
像这样调用:
MyMethod(123, "Hello", 1.0, false);
我想要一个像 string 这样的输出example
。
我需要为大量具有许多不同签名的方法执行此操作,并且可能不会使用每个方法中的所有参数而没有可辨别的模式 - 所以我尝试创建一种方法来稍微自动化该过程。
我试图使用委托和名称来解决这个问题:
delegate string GetParametersDelegate(params object[] parameters);
static GetParametersDelegate GetParametersFunc = (parameters) =>
{
return string.Join(",", parameters
.Select(parameter => nameof(parameter) + "=" + parameter));
};
像这样调用:
static void MyMethod(int i, string str, object obj, bool flag)
{
string notTheResultIWant = GetParameters(i, str, obj, flag);
// notTheResultIWant = "parameter=123,parameter=Hello,parameter=1.0,parameter=false"
}
我发现这会导致使用 lambda 中的变量名称而不是原始参数名称 - 因此每个值都错误地parameter
从 lambda 映射到。
我正在尝试做的事情甚至可能实现吗?还是有另一种方法可以解决这个问题?