簡體   English   中英

對建設者的反思

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM