public virtual T Clone <T>(T objectToClone) where T : class, IUpdatable { if (objectToClone == null) { return(null); } var repository = objectToClone as DataRepository; if (repository != null) { return(cloneDataRepository(objectToClone.DowncastTo <DataRepository>()) as T); } var formulaToClone = objectToClone as IFormula; if (formulaToClone != null) { return(CreateFormulaCloneFor(formulaToClone).DowncastTo <T>()); } var clone = _objectBaseFactory.CreateObjectBaseFrom(objectToClone); copyContainerStructure(objectToClone as IContainer, clone as IContainer); updateUsingFormula(objectToClone as IUsingFormula, clone as IUsingFormula); updateParameter(objectToClone as IParameter, clone as IParameter); //it is necessary to update the formula before the properties, since UpdatePropertiesFrom might use formula clone.UpdatePropertiesFrom(objectToClone, this); return(clone); }
private TDistribution createDistribution <TDistribution>() where TDistribution : IDistributionFormula { return(_objectBaseFactory.CreateObjectBaseFrom <TDistribution>(typeof(TDistribution))); }
protected T CreateObject <T>() where T : class, IObjectBase { return(_objectBaseFactory.CreateObjectBaseFrom <T>(typeof(T))); }