【发布时间】:2023-03-03 20:58:02
【问题描述】:
我目前在我的代码中的静态变量中存储了一个包含相关信息(包括数据库 ID)的测试列表。这是一个例子:
public static class IsokineticTests
{
// Cervical Spine Group
public static MyopathologyTest NeckFlexors = MyopathologyTest.Create(600, "Neck Flexors");
public static MyopathologyTest AnteriorObliques = MyopathologyTest.Create(601, "Anterior Obliques");
public static MyopathologyTest NeckExtensors = MyopathologyTest.Create(602, "Neck Extensors");
public static MyopathologyTest PosteriorObliques = MyopathologyTest.Create(603, "Posterior Obliques");
public static MyopathologyTest LateralFlexion = MyopathologyTest.Create(604, "Lateral Flexion");
// Shoulder Group
public static MyopathologyTest ShoulderAbductors = MyopathologyTest.Create(610, "Shoulder Abductors");
public static MyopathologyTest ShoulderExtensors = MyopathologyTest.Create(611, "Shoulder Extensors");
public static MyopathologyTest ShoulderFlexors = MyopathologyTest.Create(612, "Shoulder Flexors");
public static MyopathologyTest ShoulderLateralRotators = MyopathologyTest.Create(613, "Shoulder Lateral Rotators");
public static MyopathologyTest ShoulderMedialRotators = MyopathologyTest.Create(614, "Shoulder Medial Rotators");
}
这些然后通过其他静态属性获取方法用于创建测试组:
public static class IsokineticTestGroups
{
public static IsokineticTestGroup CervicalSpine
{
get
{
return IsokineticTestGroup.Create("Cervical Spine",
new List<MyopathologyTest>
{
IsokineticTests.NeckFlexors,
IsokineticTests.AnteriorObliques,
IsokineticTests.NeckExtensors,
IsokineticTests.PosteriorObliques,
IsokineticTests.LateralFlexion
});
}
}
}
我现在遇到的问题是基本上没有办法在 MyopathologyTest 中查找特定 ID。一种解决方案是创建一个字典并手动将所有这些测试插入到字典中,并以 ID 作为键。不过,这似乎重复了很多代码。
实现这样的事情的正确方法是什么?我想我需要外部化测试数据,在运行时加载测试并生成正确的查找表和组在飞行中。这是我应该考虑的正确方法还是有更好的方法?
【问题讨论】:
-
为什么不将所有这些数据(包括组)存储在数据库中?
-
我已经在使用 SQLite 数据库来获取测试结果,我想我的想法是将来更改某些数据会变得过于困难。但是,既然您和蒂姆提到了它,我认为没有理由不能拥有一个包含这些信息的单独数据库。
标签: c# data-structures c#-4.0 lookup-tables