首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Reflection.TargetInvocationException

Reflection.TargetInvocationException
EN

Stack Overflow用户
提问于 2013-12-14 07:49:33
回答 2查看 39.9K关注 0票数 8

我有一个叫carroms的班。当我创建它的对象时,没有错误。但是,当我创建一个carroms数组时,会抛出这个异常:

System.Reflection.TargetInvocationException类型的未处理异常发生在PresentationFramework.dll中 附加信息:调用的目标引发了异常。

我的carroms类代码:

代码语言:javascript
运行
复制
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;
    }
}

以及我创建对象的代码:

代码语言:javascript
运行
复制
Random randi = new Random();
carroms[] mycarroms = new carroms[5];
mycarroms[0].carromHeight = 100;
mycarroms[0].carromWidth = 100;
mycanvas.Children.Add(mycarroms[0].draw());
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-12-14 08:05:17

您正在创建一个数组,但all items added in array are still null除外。

Initialize them first,然后只有您可以访问它。问题就在这里-

代码语言:javascript
运行
复制
Random randi = new Random();
carroms[] mycarroms = new carroms[5];
mycarroms[0].carromHeight = 100;  <-- mycarroms[0] will be null

应该是-

代码语言:javascript
运行
复制
Random randi = new Random();
carroms[] mycarroms = new carroms[5];
mycarroms[0] = new carroms();
mycarroms[0].carromHeight = 100;

或者你可以用array initializer初始化它-

代码语言:javascript
运行
复制
Random randi = new Random();
carroms[] mycarroms = new carroms[5]
   {new carroms(), new carroms(), new carroms(), new carroms(), new carroms()};
mycarroms[0].carromHeight = 100;
票数 7
EN

Stack Overflow用户

发布于 2013-12-14 08:27:02

想要添加一些东西,不要被TargetInvocationException吓倒,因为它不能提供太多的信息。您应该看到内部异常,以获得根本原因。InnerException可以是AggregateException类型,在这种情况下,您需要进一步深入了解所有异常细节。

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20580955

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档