首页 > 代码库 > 一些设计上的问题
一些设计上的问题
最近在写Richman4L,有的时候就遇到一些问题。
在游戏中有一些卡片,比如红卡和黑卡,以及陷害卡之类的。
于是有一个基类,叫做Card。
所有的卡片都能够被使用,于是Card应该有一个Use的抽象方法。
然而在使用的时候,有的卡片希望一些参数,比如红卡黑卡希望一个股票,陷害卡希望一个玩家之类的参数。
参数的类型不一样,数目也不一样。
应该提供一个方便的办法让调用者得知这个方法希望什么参数,也能方便的调用。
我想到了反射的那一套方法的参数,是一个数组。
于是我也制造了一个ArgumentsContainer。
它象是这样。
public sealed class ArgumentsContainer
{
public List <object> Arguments { get ; }
public ArgumentsContainer ( params object [ ] args ) { Arguments = new List <object> ( args ) ; }
}
它作为Use方法的参数。
对于如何得知这个参数,我觉得这需要另外的操作。
于是有一个Arguments的属性,返回一个CommandArgumentInfo的数组。
CommandArgumentInfo包含该有的参数的介绍和要求。
然后又想到Paradox家游戏的那种风格。
于是又搞了一个ArgumentDefineDomain。
我还没有想出更好的主意,暂时就这样吧。
希望你的更好的建议。
代码在Github:https://github.com/Infinicken/Richman4L
一些设计上的问题