0

おそらく非常に単純ですが、私はC#の初心者です。いくつかのクラス:

public class Extension {
      Public string Name;
      Public List<View> Views;
}

public class Module : Extension {
     // ...
}

public class Component : Extension {
    // ...
}

public class View {
    // ...
}

そしてコレクション:

List<Extensions> MyExtensions = new List<Extensions>() {
    new Component { 
        Name = "Component",
        Views = new List<View>() {

        }
    }
    new Module { 
        Name = "Module",
        Views = new List<View>() {

        }
    }
}

ビューでのみ使用可能なプロパティ FOO を追加する方法は、彼の親は Component ですか?

4

2 に答える 2

1

クラスは現在セットアップされているため、非常にハックなコードに頼らずにその結果を取得することはできません。代わりに、クラスを次のように変更する必要があると思います。

public abstract class View
{
    // ...
}

public class ModuleView : View
{ 

}

public class ComponentView : View
{
    public object Foo; //Substitute object with whatever type Foo is
}

public abstract class Extension
{
  public string Name;
  public abstract List<View> Views { get; set; }
}

public class Module : Extension 
{
    public override List<View> Views 
    {
        get
        {
            ModuleView moduleViewA = new ModuleView();
            ModuleView moduleViewB = new ModuleView();
            //Continue building whatever ModuleView objects you need...

            return new List<View>()
            {
                moduleViewA,
                moduleViewB,
                //...plus all other ModuleView objects you built
            };
        }
        set 
        {
            Views = value;
        }
    }
}

public class Component : Extension 
{
    public override List<View> Views
    {
        get
        {
            ComponentView compViewA = new ComponentView();
            ComponentView compViewB = new ComponentView();
            //Continue building whatever ComponentView objects you need...

            return new List<View>()
            {
                compViewA,
                compViewB,
                //...plus all other ComponentView objects you built
            };
        }
        set
        {
            Views = value;
        }
    }
}

Componentこれにより、オブジェクトのみがフィールドを見ることができることが保証されますFoo

于 2013-08-25T18:22:55.117 に答える