
Net.5.0.Rosetta.AbstractRosettaModelObject.cs Maven / Gradle / Ivy
namespace Rosetta.Lib
{
using Rosetta.Lib.Meta;
using Rosetta.Lib.Validation;
///
/// Abstract base class for which is not defined to use one-of.
///
/// Class extending the abstract base class
public abstract class AbstractRosettaModelObject : IRosettaModelObject where R : AbstractRosettaModelObject
{
public abstract IRosettaMetaData MetaData { get; }
public IValidationResult Validate()
{
var metaData = MetaData;
IValidationResult result = metaData.Validator.Validate((R)this);
foreach (var validator in metaData.DataRules)
{
if (!result.IsSuccess)
{
break;
}
result = validator.Validate((R)this);
}
foreach (var validator in metaData.ChoiceRuleValidators)
{
if (!result.IsSuccess)
{
break;
}
result = validator.Validate((R)this);
}
return result;
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy