构造函数的反射
Reflection for Constructors
此处:
defaultCon
将自身绑定到 Dog()
构造函数
legCon
将自身绑定到 Dog(int legs)
构造函数
为什么我们指定
new Type[0]
在 X 行中,即使默认构造函数中没有参数
(new[] { typeof(int) })
在 Y 行! argument/parameter field.Similar 内的花括号问题在 Z 行
我在 Whosebug 上进行了搜索 - this 答案很接近,但没有回答我的问题。这是我的代码:
namespace Coding
{
internal class Dog
{
public int NumberOfLegs { get; set; }
public Dog()
{
NumberOfLegs = 4;
}
public Dog(int legs)
{
NumberOfLegs = legs;
}
}
public class Class1
{
static void Main(string[] args)
{
/*line X*/ var defaultCon = typeof(Dog).GetConstructor(new Type[0]); // Get Default Constructor without any params
/*line Y*/ var legCon = typeof(Dog).GetConstructor(new[] { typeof(int) });//get constructor with param int
var defaultDog = defaultCon.Invoke(null) as Dog;//invoke defaultCon for a Dog Object
/*Line Z*/ var legDog = legCon.Invoke(new object[] { 5 });//invoke legCon for a Dog object(Sets number of legs as 5) as Dog
Console.Read();
}
}
}
Why do we specify "new Type[0]" in Line X even though there are no parameters in Default Constructor
要说没有参数-所以参数types的数组是空的。
Why do we specify "(new[] { typeof(int) })" in Line Y! Curly braces inside argument/parameter field.
用单个元素创建数组或参数类型 - int
对应的类型。
Similar problem in Line Z.
答案相同,只是这次您创建的是参数数组,而不是参数类型。
simplest overload of Type.GetConstructor
仍然采用类型数组来指示您要获取的构造函数的参数。
值Type[0]
是一个空数组,表示没有参数。
此处:
defaultCon
将自身绑定到 Dog()
构造函数
legCon
将自身绑定到 Dog(int legs)
构造函数
为什么我们指定
new Type[0]
在 X 行中,即使默认构造函数中没有参数
(new[] { typeof(int) })
在 Y 行! argument/parameter field.Similar 内的花括号问题在 Z 行
我在 Whosebug 上进行了搜索 - this 答案很接近,但没有回答我的问题。这是我的代码:
namespace Coding
{
internal class Dog
{
public int NumberOfLegs { get; set; }
public Dog()
{
NumberOfLegs = 4;
}
public Dog(int legs)
{
NumberOfLegs = legs;
}
}
public class Class1
{
static void Main(string[] args)
{
/*line X*/ var defaultCon = typeof(Dog).GetConstructor(new Type[0]); // Get Default Constructor without any params
/*line Y*/ var legCon = typeof(Dog).GetConstructor(new[] { typeof(int) });//get constructor with param int
var defaultDog = defaultCon.Invoke(null) as Dog;//invoke defaultCon for a Dog Object
/*Line Z*/ var legDog = legCon.Invoke(new object[] { 5 });//invoke legCon for a Dog object(Sets number of legs as 5) as Dog
Console.Read();
}
}
}
Why do we specify "new Type[0]" in Line X even though there are no parameters in Default Constructor
要说没有参数-所以参数types的数组是空的。
Why do we specify "(new[] { typeof(int) })" in Line Y! Curly braces inside argument/parameter field.
用单个元素创建数组或参数类型 - int
对应的类型。
Similar problem in Line Z.
答案相同,只是这次您创建的是参数数组,而不是参数类型。
simplest overload of Type.GetConstructor
仍然采用类型数组来指示您要获取的构造函数的参数。
值Type[0]
是一个空数组,表示没有参数。