public void SetFormula(int srcIndex, int trgIndex, IBxFormula fml) { if (srcIndex == trgIndex) { return; } BxSrcUnitFormulas formulas = _formulas[srcIndex]; formulas.SetFormula(trgIndex, fml); }
public IBxFormula GetFormula(int srcIndex, int trgIndex) { if (srcIndex == trgIndex) { return(ParsedFormula.s_sameUnitFormula); } BxSrcUnitFormulas formulas = _formulas[srcIndex]; IBxFormula fml = formulas.GetFormula(trgIndex); if (fml == null) { //取反向的转换关系 ParsedFormula tempFml = _formulas[trgIndex].GetFormula(srcIndex) as ParsedFormula; if (tempFml != null) { fml = ParsedFormula.Inverse(tempFml); formulas.SetFormula(trgIndex, fml); } } if (fml == null) { if ((trgIndex == _nDefaultUnitIndex) || (srcIndex == _nDefaultUnitIndex)) { throw new Exception(string.Format("缺乏单位{0}和主单位{1}之间的转换关系\n", this[srcIndex].ID, this[trgIndex].ID)); } else { IBxFormula fml1 = GetFormula(srcIndex, _nDefaultUnitIndex); IBxFormula fml2 = GetFormula(_nDefaultUnitIndex, trgIndex); fml = new CombinedFormula(fml1, fml2); formulas.SetFormula(trgIndex, fml); } } return(fml); }
public void SetFormula(string srcUnit, string trgUnit, IBxFormula fml) { if (srcUnit == trgUnit) { return; } IBxIndexedUnit src = ParseEx(srcUnit); IBxIndexedUnit trg = ParseEx(trgUnit); if ((src == null) || (trg == null)) { return; } BxSrcUnitFormulas formulas = _formulas[src.Index]; formulas.SetFormula(trg.Index, fml); }