[英]Reflection for Constructors
這里:
defaultCon
將自身綁定到Dog()
構造函數
legCon
將自身綁定到Dog(int legs)
構造函數
我們為什么要指定
即使默認構造函數中沒有參數,第X行中的new Type[0]
(new[] { typeof(int) })
在Y行中! 參數/參數字段中的花括號。Z行中的類似問題。
我在StackOverflow上搜索- 這個答案接近了,但沒有回答我的問題。 這是我的代碼:
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();
}
}
}
為什么即使在默認構造函數中沒有參數,我們也還是在X行中指定“ new Type [0]”
要說沒有參數-因此參數類型的數組為空。
為什么我們在Y行中指定“(new [] {typeof(int)})”! 參數/參數字段內的花括號。
用單個元素創建數組或參數類型-對應於int
的類型。
Z行中的類似問題。
答案相同,只是這次您要創建一個參數數組,而不是參數類型。
Type.GetConstructor
的最簡單重載仍然采用類型數組來指示您要獲取的構造函數的參數。
值Type[0]
是一個空數組 ,表示沒有參數。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.