【发布时间】:2021-11-19 15:58:42
【问题描述】:
我正在制作一个模拟器,用于模拟太阳系行星和小行星等之间的相互作用。看到我正在编写的很多代码与我为之前模拟石油泄漏的项目编写的代码非常相似,我想使用泛型来重用我的旧代码。我有几个构成模拟器的类,以及一个用于模拟的类(在本例中为天体),它作为泛型类型参数给出。模拟器需要知道它必须为递归公式存储多少帧,这由通用参数决定。
public class Sim<T> where T : IEntity
{
readonly int RecursionDepth; //need to get the value from the class passed as T
//some more code
}
public interface IEntity
{
//cant require a const here, it would be a default implementation instead
//don't want a int property with get; here as there are no guarantees about the immutability
//and different instances may have different values.
//some code
}
将此值设置为模拟中使用的类的常量或静态只读字段是有意义的。但是,这两个选项都不是使用界面所必需的。当然,我可以在接口定义中添加一个属性,但据我所知,我不能要求它是只读的,并且对于类的每个实例都相同。我真的不想求助于它只是传递给系统的随机整数的情况,我必须相信它会成功。
我是否可以设置任何要求,以至少对参数的不变性及其在类的所有实例中的平等性有合理的信心?
【问题讨论】:
标签: c#