У меня есть 1 длительный процесс, который имеет 2 шага, как показано ниже:
1) Преобразование (длительный процесс)
2) Управление версиями
Итак, если Шаг 1выполнено, шаг 2 выполнен.Теперь для выполнения 2-го шага я выполнил отложенную загрузку для контроля версий , как показано ниже:
public sealed class VariantProcessor
{
private readonly Lazy<IEntityVersion> _entityVersion;
private string _myAppConnectionString { get; set; }
private readonly Action<Variant> _transform;
public VariantProcessor(Func<IEntityVersion> entityVersion, string _myAppConnectionString, Action<Variant> transform)
{
_entityVersion = new Lazy<IEntityVersion>(entityVersion);
_myAppConnectionString = _myAppConnectionString;
_transform = transform;
}
public void Process(Variant model)
{
string variantVersion = string.empty;
try
{
_transform(model);
try
{
variantVersion = _entityVersion.Value.GetVersion();
}
catch (Exception)
{
//rollback Transform operation
}
}
catch (Exception)
{
}
}
}
public class AggregateCalculator : IVariantProcessor
{
private string _myAppConnectionString { get; set; }
public void Process(Variant model)
{
_myAppConnectionString = ConfigurationManager.ConnectionStrings["dbConnectionString"].ConnectionString;
new VariantProcessor(() => new EntityVersion(_myAppConnectionString),
_myAppConnectionString,Transform).
Process(model);
}
private void Transform(Variant model)
{
//logic
}
}
Вот как я вызываю создание версий с использованием lazyзагрузка как мне нужно выполнить после моего преобразования:
variantVersion = _entityVersion.Value.GetVersion();
Правильно ли я использовал отложенную загрузку или здесь не требуется?
Обновление: МысльПроцесс создания версий в виде отложенной загрузки состоит в том, чтобы избежать размещения своего объекта в памяти до тех пор, пока не начнется процесс преобразования. Я хотел, чтобы он был доступен только тогда, когда его запросили.