mirror of
https://github.com/Artemis-RGB/Artemis
synced 2026-11-12 03:48:56 +00:00
Conditions - Added null-checks to accessors
Conditions - Simplified operators, removing unnecessary expression trees
This commit is contained in:
1 parent
ad3581a93a
commit
33373bda57
24 files changed
+253
-311
No files matched your search
@@ -37,6 +37,8 @@ namespace Artemis.Core
|
||||
throw new ObjectDisposedException("ConditionalDataBinding");
|
||||
|
||||
var condition = Conditions.FirstOrDefault(c => c.Evaluate());
|
||||
if (condition != null)
|
||||
Console.WriteLine();
|
||||
return condition == null ? baseValue : condition.Value;
|
||||
}
|
||||
|
||||
@@ -108,8 +110,7 @@ namespace Artemis.Core
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
|
||||
|
||||
#region Storage
|
||||
|
||||
/// <inheritdoc />
|
||||
|
||||
@@ -300,25 +300,14 @@ namespace Artemis.Core
|
||||
return;
|
||||
|
||||
// If the right side value is null, the constant type cannot be inferred and must be provided based on the data binding target
|
||||
var parameterAccessor = CreateAccessor(ParameterDataModel, ParameterPropertyPath, "parameter", out var rightSideParameter);
|
||||
var parameterAccessor = ExpressionUtilities.CreateDataModelAccessor(
|
||||
ParameterDataModel, ParameterPropertyPath, "parameter", out var rightSideParameter
|
||||
);
|
||||
var lambda = Expression.Lambda<Func<DataModel, object>>(Expression.Convert(parameterAccessor, typeof(object)), rightSideParameter);
|
||||
CompiledParameterAccessor = lambda.Compile();
|
||||
}
|
||||
}
|
||||
|
||||
private Expression CreateAccessor(DataModel dataModel, string path, string parameterName, out ParameterExpression parameter)
|
||||
{
|
||||
var listType = dataModel.GetListTypeInPath(path);
|
||||
if (listType != null)
|
||||
throw new ArtemisCoreException($"Cannot create a regular accessor at path {path} because the path contains a list");
|
||||
|
||||
parameter = Expression.Parameter(typeof(object), parameterName + "DataModel");
|
||||
return path.Split('.').Aggregate<string, Expression>(
|
||||
Expression.Convert(parameter, dataModel.GetType()), // Cast to the appropriate type
|
||||
Expression.Property
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
#region Event handlers
|
||||
|
||||
private void DataBindingModifierTypeStoreOnDataBindingModifierAdded(object sender, DataBindingModifierTypeStoreEvent e)
|
||||
|
||||
Reference in new issue
Block a user