积极答复者
反射的问题

问题
-
反射一个带有 out 参数的构造函数.Msdn 文档说是要省略特许特性
于是乎我就这样做了
public class TestClass { public String[] _Base_Parameters; public TestClass(String parameter1, String parameter2, String parameter3, ref String parameter4) { _Base_Parameters = new String[4] { parameter1, parameter2, parameter3, parameter4 }; } public TestClass(String parameter1, String parameter2, String parameter3, String parameter4, out String parameter5) { parameter5 = "out Parameter5"; _Base_Parameters = new String[5] { parameter1, parameter2, parameter3, parameter4, parameter5 }; } }
[TestMethod()] public void Get_Public_With_out_Construct_Test() { TestClass source;
var arguments = new Object[] { new String[] { "Parameter1", "Parameter2", "Parameter3","Parameter4", null} }; source = typeof(TestClass).GetConstructor(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic,
null,
null,
null
).Invoke(arguments)
source._Base_Parameters.Length.Should().Equal(5); source._Base_Parameters.Should().Equal( new String[] { "Parameter1", "Parameter2", "Parameter3", "Parameter4", "out Parameter5"} ); // _Base_Parameters = "Parameter1", "Parameter2", "Parameter3", "Parameter4", null arguments[4].Should().Equal("out Parameter5"); // arguments[4] = null }out 参数的特性似乎无效了.
答案
全部回复
-
虽然正确的实例化了 TestClass 但是 out 参数 竟然不 out . 在内部 赋值也无效了
public TestClass(String parameter1, String parameter2, String parameter3, String parameter4, out String parameter5) { parameter5 = "out Parameter5"; _Base_Parameters = new String[5] { parameter1, parameter2, parameter3, parameter4, parameter5 }; }
_Base_Parameters 的值为 "Parameter1", "Parameter2", "Parameter3", "Parameter4", null
-
谢谢大侠!~
还有个问题 : 如果是静态方法带有 ref 或 out 参数的方法是否也要使用 modifiers 参数进行调用?
看来答案已经确定。非常感谢您的支持和理解。
Best Regards,
Rocky Yue[MSFT]
MSDN Community Support | Feedback to us
Get or Request Code Sample from Microsoft
Please remember to mark the replies as answers if they help and unmark them if they provide no help.