【发布时间】:2018-10-24 22:31:19
【问题描述】:
我想知道是否有一种方法可以为以下代码创建通用的 getter 和 setter 方法。
目前,setter 检查输入对象的实际类型并将其添加到相关列表中。对我来说这感觉是一种糟糕的方法,但我想知道是否有更好的方法。
我不能使用任何其他数据结构,如字典,因为我使用的序列化系统只能序列化简单的集合类型,如列表和数组,因此是所有单独的列表。
public abstract class BaseStyleType {}
public class ImageStyle : BaseStyleType {}
public class TextStyle : BaseStyleType {}
public class ButtonStyle : BaseStyleType {}
//...etc
public class GlobalStyle : ASerializedObject
{
public List<ImageStyle> ImageStyles = new List<ImageStyle>();
public List<TextStyle> TextStyles = new List<TextStyle>();
public List<ButtonStyle> ButtonStyles = new List<ButtonStyle>();
//... etc
// Setter
public void SetStyle(BaseStyleType inStyle)
{
if (inStyle as ImageStyle != null)
ImageStyles.Add((ImageStyle)inStyle);
else if (inStyle as TextStyle != null)
TextStyles.Add((TextStyle)inStyle);
else if (inStyle as ButtonStyle != null)
ButtonStyles.Add((ButtonStyle)inStyle);
//... etc
}
// Getter
public T GetStyle<T>(int index)
{
//...?
}
}
谢谢
【问题讨论】:
-
你不能停止使用那个连字典都不能的过时的序列化系统吗?我的意思是,你到底在用什么,它这么糟糕?
标签: c# list class generics member