我理解如何获取传递给方法的参数名称,但是假设我有一个方法声明如下:
static void ParamsTest(string template, params object[] objects)
Run Code Online (Sandbox Code Playgroud)
我希望在我的模板中使用对象/属性名称替换我的`objects'参数中的任何对象中的属性值.那么我们就说我用以下方法调用此方法:
ParamsTest("Congrats", customer, purchase);
Run Code Online (Sandbox Code Playgroud)
我只能检索两个试图填写模板的参数名称,即template,和objects,并且objects集合中对象的名称永远丢失,不是吗?
我可能需要一个List<object>作为我的第二个参数,但我觉得有一个更优雅的解决方案,可能有一个lambda或其他东西.我不知道,我不习惯在LINQ之外使用lambdas.
由马克提出我可以提供一个匿名类型的答案:
using System;
namespace ConsoleApplication5
{
class Program
{
static void Main(string[] args)
{
ParamsTest(new { A = "a", B = "b"});
}
public static void ParamsTest(object o)
{
if (o == null)
{
throw new ArgumentNullException();
}
var t = o.GetType();
var aValue = t.GetProperty("A").GetValue(o, null);
var bValue = t.GetProperty("B").GetValue(o, null);
}
}
}
Run Code Online (Sandbox Code Playgroud)
然而,这个有缺点:
| 归档时间: |
|
| 查看次数: |
534 次 |
| 最近记录: |