0

クラスの一部であるこの構造体があります。

  public struct PartStruct
    {
        public string name;
        public string filename;
        public string layer2D;
        public string layer3D;
        public TypeOfPart type;
        public int hight;
        public int depth;
        public int length;
        public int flooroffset;
        public int width;
        public int cellingoffset;
    }

この構造体の各インスタンスは、異なるプロパティを持つパーツを表します。この関数があるため、構造体型を 1 つだけ使用しています。

public void insert(Partstruct part){//large code to insert the part}

例:

Partstruct monitor = new Partstruct();
monitor.name = "mon1";
monitor.file = "default monitor file name.jpg";//this is a const for each new monitor
monitor.TypeofPart = monitor;
monitor.layer2d = "default monitor layer";//this will be the same for each new monitor.

等..

Partstruct keyboard= new Partstruct();
keyboard.name = "keyboard1";
keyboard.file = "default keyboard file name.jpg";//this is a const for each new keyboard
keyboard.TypeofPart = keyboard;
keyboard.layer2d = "default keyboard 2d layer";//this will be the same for each new keyboard.
keyboard.layer3d = "default keyboard 3d layer"//this will be the same for each new keyboard.

等..

insert(monitor);
insert(keyboard);

よりスマートな方法でこれを行うことができますか? 私は.net 3.5を使用しています

4

1 に答える 1

4

この場合、継承の恩恵を受けることができるように思えます。part は一般的なタイプであり、Monitor や Keyboard などのより具体的なタイプがあるため、継承の完璧な例です。したがって、次のようになります。

public class Part
{
    public virtual string Name { get { return "not specified"; } }
    public virtual string FileName { get { return "not specified"; } }
    public virtual string Layer2D { get { return "not specified"; } }
    public virtual string Layer3D { get { return "not specified"; } }
    ...
}

public class Monitor : Part
{
    public override FileName { get { return "default monitor"; } }
    public override Layer2D { get { return "default monitor layer"; }}
    ...
}

public class Keyboard : Part
{
    public override FileName { get { return "default keyboard filename.jpg"; } }
    public override Layer2D { get { return "default keyboard 2d layer"; }}
    ...
}

Inheritance には多くのリソースがあります。生産性と有効性が大幅に向上するため、それらを参照することを強くお勧めします。一例を次に示します: http://msdn.microsoft.com/en-us/library/ms173149(v=vs.80).aspx

于 2013-02-07T15:52:31.943 に答える