我们的一个单元测试是使用随机数据填充业务对象中的属性.
这些属性具有不同的内在类型,因此我们希望使用泛型的功能来返回您传入的类型的数据.有些内容如下:
public static T GetData()
你会如何接近这个?低级别界面会起作用吗?(IConvertible)
您可以保留"易于使用"的GetData接口,但内部有一个Dictionary
public static T GetData() { object factory; if (!factories.TryGet(typeof(T), out factory)) { throw new ArgumentException("No factory for type " + typeof(T).Name); } Func factoryFunc = (Func ) factory; return factoryFunc(); }
然后,您可以在静态初始化程序中设置工厂字典,并为要创建的每种类型的随机数据设置一个委托.在某些情况下,您可以使用简单的lambda表达式(例如,对于整数),在某些情况下,委托可以指向执行更多工作的方法(例如,对于字符串).
顺便说一下,您可能希望将我的StaticRandom类用于线程安全的RNG.