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