我正在使用WPF和Entity-Framework为自己的工作构建应用程序。通常的想法是,它跟踪一家化工公司的测试结果。
每个产品都有批次和测试规格列表。每批都有样品。每个样本都有测试结果列表。每个测试结果要么是正常值,要么是根据其他测试结果计算得出的。
例如,某产品具有
该产品每批次的每个新样品都需要列出这些测试的结果列表。
Test3.Result
,我希望总是能计算出该结果。 Test1.Result
,我希望始终收到输入的实际结果。我有一个带有几个派生版本的TestSpec类。相关的类是下面的基类:
// the base class for all test specifications
public abstract class TestSpec
{
public TestResultCalculationStrategy Calculator { get; set; }
public ICollection<TestResult> Results { get; set; }
}
public abstract class TestResultCalculationStrategy
{
public TestSpec Spec { get; set; }
public virtual double? Calculate(Sample sample);
}
public class DivisionTestResultCalculationStrategy : TestResultCalculationStrategy
{
public TestSpec Numerator { get; set; }
public TestSpec Denominator { get; set; }
public override double? Calculate(Sample sample)
}
public class TestResult
{
public Sample Sample { get; set; }
public TestSpec Spec { get; set; }
public double? Result
{
get => Spec.Calculator.Calculate(Sample);
set => ???
}
}
我的问题是,这种方法不能很好地工作,当我尝试将其连接到视图模型以编辑样本时,它几乎无法工作。
有人有更好的主意吗?