Reflection.TargetInvocationException

本文关键字:TargetInvocationException Reflection | 更新日期: 2024-09-21 06:39:12

我有一个名为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());

Reflection.TargetInvocationException

想要添加一些内容,不要被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;
相关文章:
  • 没有找到相关文章