簡體   English   中英

Reflection.TargetInvocationException

[英]Reflection.TargetInvocationException

我有一個名為carroms的課程 當我創建它的對象時,沒有錯誤。 但是當我創建一個carroms數組時,拋出了這個異常:

PresentationFramework.dll中出現未處理的“System.Reflection.TargetInvocationException”類型異常

附加信息:調用目標引發了異常。

我的carroms類代碼:

class carroms
{

    private bool player;

    public bool checkPlayer
    {
        get { return player; }
        set { player = value; }
    }

    private Point center;

    public Point carromCenter
    {
        get { return center; }
        set { center = value; }
    }

    private Point[] points;

    public Point[] carromPoints
    {
        get { return points; }
        set { points = value; }
    }

    private double width;

    public double carromWidth
    {
        get { return width; }
        set { width = value;
        }
    }

    private double height;

    public double carromHeight
    {
        get { return height; }
        set { height = value; }
    }

    public carroms()
    {
        points = new Point[370];
    }

    public Ellipse draw()
    {
        Ellipse myellipse = new Ellipse();
        myellipse.Height = carromHeight;
        myellipse.Width = carromWidth;
        if (checkPlayer == true)
        {
            myellipse.Fill = Brushes.Black;
        }
        else
        {
            myellipse.Fill = Brushes.Beige;
        }
        return myellipse;
    }
}

我的代碼用於創建對象:

Random randi = new Random();
carroms[] mycarroms = new carroms[5];
mycarroms[0].carromHeight = 100;
mycarroms[0].carromWidth = 100;
mycanvas.Children.Add(mycarroms[0].draw());

想要添加一些東西,不要被TargetInvocationException嚇倒,因為它不會提供太多信息。 您應該看到內部異常以獲得根本原因。 InnerException可以是AggregateException類型,在這種情況下,您需要更進一步以獲取所有異常詳細信息。

您正在創建一個數組,但all items added in array are still null

Initialize them first然后只能訪問它。 問題在這里 -

Random randi = new Random();
carroms[] mycarroms = new carroms[5];
mycarroms[0].carromHeight = 100;  <-- mycarroms[0] will be null

它應該是 -

Random randi = new Random();
carroms[] mycarroms = new carroms[5];
mycarroms[0] = new carroms();
mycarroms[0].carromHeight = 100;

或者您可以使用array initializer來初始化它 -

Random randi = new Random();
carroms[] mycarroms = new carroms[5]
   {new carroms(), new carroms(), new carroms(), new carroms(), new carroms()};
mycarroms[0].carromHeight = 100;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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