定义扩展列表的类时,如何从其内部方法引用列表

本文关键字:列表 内部 方法 引用 扩展 定义 | 更新日期: 2023-09-27 18:34:54

说我有public class MyClass: List<MyObjects>

我希望这个类有一个操作列表的内部方法,比如

void ConstructListFromJSON(){
 HoweverIshouldrefertomylist = JsonUtility.FromJson<List<MyObjects>("myObjects.json");
}

我应该用什么来代替我应该的论者?我已经尝试过thisself和类似的,但它不起作用。当然有一种方法可以引用列表中的数据结构吗?

定义扩展列表的类时,如何从其内部方法引用列表

您无法重新分配this ,因此请清除列表并添加要添加的任何内容:

var objectsToStore = JsonUtility.FromJson<List<MyObjects>>("myObjects.json");
this.Clear();
this.AddRange(objectsToStore);

但总的来说,你真的不想继承List<T>.请参阅为什么不从 List 继承?。请改用合成:

public class MyClass
{
    public List<YourObjects> YourObjects { get; set; } 
    public void ConstructListFromJSON()
    {
        YourObjects = JsonUtility.FromJson<List<MyObjects>("myObjects.json");
    }   
}

要正确生成表示 JSON 的类,请参阅将 JSON 反序列化为对象

要访问基对象,只需使用 base 关键字。但是,对于您正在展示的内容,不同的方法更有意义 - - 只需维护私有对象引用即可。

 public class foo{
    private List<MyObject> myList = null;
    public foo(List<MyObject> l){
      myList = l;
    }
 }

现在,类在构造时具有列表,但该列表对用户来说是私有的。 这是一种更好的设计形式。它使用组合而不是继承,并提供更松散耦合的设计。