假设我有这个通用方法:
public T1 GenericTest<T1, T2>(T2 Obj, out T2 NewObj)
{
NewObj = Obj;
return default;
}
如何将匿名对象传递给它?
我用什么代替“???” 在以下示例中调用方法时:
var Anonymous = new { Prop1 = "foo", Prop2 = "bar" };
GenericTest<bool,???>(Anonymous, out var NewAnonymous);
NewAnonymous.Prop1 = "Hello";
NewAnonymous.Prop2 = "World";
//etc...
我的目标是在调用该方法后让 Visual Studio 的 Intellisense 在“NewAnonymous”对象上拾取“Prop1”和“Prop2”。这需要推断匿名类型,但我不知道如何使用多个类型说明符来做到这一点。
注意:我希望能够访问从“out”参数返回的匿名对象的属性,因此键入“object”将不够好。如果我将“object”作为类型,我将无法从方法外部访问“NewAnonymous”对象的属性“Prop1”和“Prop2”。
注意 2:我不需要从方法中访问匿名对象的属性。
编辑:匿名对象确实可以传递给泛型方法。我只是不知道如何使用具有多个类型说明符的通用方法来做到这一点(这就是我提出这个问题的原因)。这是一个只有一个类型说明符的示例:
public void SingleGenericTypeTest<T>(T Obj, out T NewObj)
{
NewObj = Obj;
}
var Anonymous = new { Prop1 = "foo", Prop2 = "bar" };
SingleGenericTypeTest(Anonymous, out var NewAnonymous);
NewAnonymous.Prop1 = "Hello";
NewAnonymous.Prop2 = "World";
//etc...