C# 如何从我的PolygonContainer中调用公共空白?

C# 如何从我的PolygonContainer中调用公共空白?,c#,xna,C#,Xna,我总是在以下行中收到此错误消息: Casttoenum(this.Polygontype); 无法访问外部类型的非静态成员 通过嵌套类型创建“WindowsPhoneGame2.Containerclass” 'WindowsPhoneGame2.Containerclass.PolygonContainer 怎么了?如何从我的PolygonContainer中调用public void Casttoenum 解决这个问题的最好办法是什么 public List<Polygo

我总是在以下行中收到此错误消息:

  Casttoenum(this.Polygontype);
无法访问外部类型的非静态成员 通过嵌套类型创建“WindowsPhoneGame2.Containerclass” 'WindowsPhoneGame2.Containerclass.PolygonContainer

怎么了?如何从我的PolygonContainer中调用public void Casttoenum

解决这个问题的最好办法是什么

    public List<PolygonContainer> PolygonList = new List<PolygonContainer>();
    public struct PolygonContainer
    {
        public float PolygonpositionX;
        public float PolygonpositionY;
        public float Polygonrotation;
        public int Polygontype;

        public PolygonContainer(float polygonpositionx, float polygonpositiony, float polygonrotation, int polygontype)
            : this()
        {
            this.PolygonpositionX = polygonpositionx;
            this.PolygonpositionY = polygonpositiony;
            this.Polygonrotation = polygonrotation;
            this.Polygontype = polygontype;
            Casttoenum(this.Polygontype);
        }
    }

    public enum Polygontypes
    {
        PolyState1 = 1,
        PolyState2 = 2,
        PolyState3 = 3
    }

    private Polygontypes currentPolygontype;

    public void Casttoenum(int state)
    {
       currentPolygontype = (Polygontypes)state;                                     
       WhichPolygon(currentPolygontype);
    }

    public List<Vertices> Polyglist = new List<Vertices>();

    public void WhichPolygon(Polygontypes polyliststate)
    {
        switch (polyliststate)
        {
            case Polygontypes.PolyState1:
                Polyglist = list1;
                break;
            case Polygontypes.PolyState2:
                Polyglist = list2;
                break;
            case Polygontypes.PolyState3:
            Polyglist = list3;
                break;
        }
    }
public List PolygonList=new List();
公共结构多边形容器
{
公共浮动polygonx;
公共浮动一夫多妻制;
公共浮动多边形旋转;
公共int多基因型;
公共多边形容器(浮点多边形位置X、浮点多边形位置Y、浮点多边形旋转、整数多边形类型)
:此()
{
this.PolygonpositionX=PolygonpositionX;
this.PolygonpositionY=PolygonpositionY;
这个.Polygonrotation=Polygonrotation;
this.Polygontype=Polygontype;
Casttoenum(this.Polygontype);
}
}
公共枚举多基因型
{
PolyState1=1,
PolyState2=2,
PolyState3=3
}
私有多基因型currentPolygontype;
公共void Casttoenum(int状态)
{
CurrentPolyOnType=(PolyOnTypes)状态;
WhichPolygon(当前多边形类型);
}
公共列表=新列表();
公共void WhichPolygon(多边形类型polyliststate)
{
开关(状态)
{
案例PolyOnTypes.PolyState1:
Polyglist=list1;
打破
案例POLYCONTYPES.PolyState2:
Polyglist=list2;
打破
案例POLYCONTYPES.PolyState3:
Polyglist=list3;
打破
}
}

在方法声明中,不要直接获取int,而是直接获取Polygontypes(enum),这样可以避免强制转换

更改PolygonContainer(),如下所示:

public PolygonContainer(float polygonpositionx, float polygonpositiony, float polygonrotation, Polygontypes polygontype)
然后删除用于强制转换到枚举的以下语句:

this.Polygontype = polygontype; 
Casttoenum(this.Polygontype);

调用PolygonContainer()函数时,必须将枚举值作为最后一个参数而不是int传递,这样就不能传递无效值。

这不起作用,因为最后一个参数是我从文本文件读取的int。有其他方法解决此问题吗?