none
反射的问题 RRS feed

  • 问题

  • 反射一个带有 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 参数的特性似乎无效了.

    2011年11月8日 4:01

答案

全部回复

  • 虽然正确的实例化了 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

    2011年11月8日 4:03
  • 设置 GetConstructor 的参数 modifiers。
    我也有自己的签名档哦!
    • 已标记为答案 钱仔 2011年11月9日 9:22
    2011年11月8日 4:49
  • 谢谢大侠!~

    还有个问题 : 如果是静态方法带有 ref 或 out 参数的方法是否也要使用 modifiers 参数进行调用?

    • 已编辑 钱仔 2011年11月8日 21:52
    2011年11月8日 21:52
  • 谢谢大侠!~

    还有个问题 : 如果是静态方法带有 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.

    2011年11月10日 9:55
    版主