在不知道T?</t>的情况下保持List <t>的引用

时间:2014-02-05 00:15:16

标签: c# unity-container

澄清:目标是拥有我的UIPList 1.能够观看任何ObservableList,其中T是iUIP或其中一个继承者,2。能够绘制连接到该iUIP的UIPrefab按钮列表,和3.能够随时更改它正在观看的列表(并且只能看一个列表)。

我可以绘制gui按钮并使第一个手表工作(使用下面的hacky代码),但是没有办法将引用存储在UIPList中,所以当我想要观看其他内容时我可以取消订阅该列表。我不能把它变成“UIPList”(可以存储引用)而不会失去上面提到的第三种能力。

我现在正在尝试使用菜单(谁知道UIPLists和ObservableLists参与其中)在内容更改时负责取消订阅,但理想情况下我可以将ObservableList传递给UIPList并且它将知道如何观看它,绘制gui,并在获得新列表时取消订阅。

原帖: 我有UIPList应该观看ObservableList<T> where T:iUIP。 (iUIP表示具有可以在UIPList中绘制的按钮的类。

问题是我无法存储对列表的本地引用,因为它可能是ObservableList<iUIP>或者可能是ObservableList<Character>ObservableList<Organization>等等(其他类继承{ {1}})。

我无法在iUIP上使用ObservableList<iUIP>作为参考,因为我可能想看一个无法转换为UIPList的列表,尽管从iUIP继承了字符,所以有无法存储列表ObservableList<iUIP>的本地引用应该观看。

我在UIPList上使用SetWatchList<T>(ObservableList<T> list)方法来查看列表,但由于没有对原始列表的引用,当我想要更改UIPList正在观看的内容时没有我需要取消订阅之前的列表的参考。

UIPList

1 个答案:

答案 0 :(得分:2)

使整个班级成为通用

public class UIPList<T> : MonoBehaviour where T : iUIP

然后你可以存储对列表的引用。这更好地封装了列表的实际内容。

不要忘记从方法中删除通用约束

public void WatchList(ObservableList<T> list)