Makale Özeti

CodeDom ve ya reflection ile uğraşıyorsunuz ve elinizde System.Reflection.ParameterInfo tipinde bir parametre info’nuz var. Ama malesef ki ParameterInfo class’ının IsOut, IsOptional özelliklerine benzer “IsRef” ve ya “IsReference” isminde bir özelliği yok. Bu .NET Framework içerisinde yer alan basit bir “eksiklik” olabilir ancak çözümü mümkün olmayan bir durum değil.

Makale

CodeDom ve ya reflection ile uğraşıyorsunuz ve elinizde System.Reflection.ParameterInfo tipinde bir parametre info’nuz var. Ama malesef ki ParameterInfo class’ının IsOut, IsOptional özelliklerine benzer “IsRef” ve ya “IsReference” isminde bir özelliği yok. Bu .NET Framework içerisinde yer alan basit bir “eksiklik” olabilir ancak çözümü mümkün olmayan bir durum değil. Çözümü gayet kısa bir şekilde anlatmak gerekirse; Parametrenizin isminin “param1″ olduğunu ve tipinin de “int” olduğunu düşünürseniz, ParameterInfo class’ının ToString method’u size “int& param1″ şeklinde bir string döndürecektir. “&” işareti sadece “param1″ parametreniz “out” ve ya “ref” olduğunda eklenir. Bu sayede ToString method’undan dönen string’in içerisinde “&” işareti varsa ve ParameterInfo’nuzun “IsOut” değeri “false” ise, geriye tek bir ihtimal kalmaktadır, parametreniz referans olarak gönderilmiştir. bool m_IsRef = (! myParameterInfo.IsOut && myParameterInfo.ToString().IndexOf("&") > -1); Ayrıca ParameterInfo.ToString() method’u yerine, ParameterInfo.ParameterType.Name özelliğini kullanmanız da mümkün.