forked from zzzprojects/System.Linq.Dynamic.Core
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathProgram.cs
More file actions
66 lines (55 loc) · 2.11 KB
/
Program.cs
File metadata and controls
66 lines (55 loc) · 2.11 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
using System.Diagnostics;
using System.Diagnostics.CodeAnalysis;
using System.Linq.Dynamic.Core;
using System.Reflection;
using Serilog;
using Serilog.Exceptions;
AppDomain.CurrentDomain.AssemblyResolve += CurrentDomainOnAssemblyResolve;
Log.Logger = new LoggerConfiguration()
.Enrich.WithExceptionDetails()
.WriteTo.Console(outputTemplate: "{Timestamp:HH:mm:ss.fff} [{Level}] {Message}{NewLine}{Exception}")
.CreateLogger();
var customers = new List<Customer>
{
new(Guid.NewGuid(), [
new Order(Guid.NewGuid()),
new Order(Guid.NewGuid()),
new Order(Guid.NewGuid()),
new Order(Guid.NewGuid())
]),
new(Guid.NewGuid(), [
new Order(Guid.NewGuid()),
new Order(Guid.NewGuid())
])
};
Log.Information("--- LoadAdditionalAssembliesFromCurrentDomainBaseDirectory = {load} ---", false);
var result = customers
.AsQueryable()
.Where("Orders.Count >= @0", 3)
.OrderBy("Orders.Count")
.ToList();
Log.Information("Found {Count} customers: {Customers}", result.Count, result);
Log.Information(new string('*', 80));
Log.Information("--- LoadAdditionalAssembliesFromCurrentDomainBaseDirectory = {load} ---", true);
var config = new ParsingConfig
{
LoadAdditionalAssembliesFromCurrentDomainBaseDirectory = true
};
var result2 = customers
.AsQueryable()
.Where(config, "Orders.Count >= @0", 3)
.OrderBy("Orders.Count")
.ToList();
Log.Information("Found {Count} customers: {Customers}", result2.Count, result2);
return;
static Assembly? CurrentDomainOnAssemblyResolve(object? sender, ResolveEventArgs resolveEventArgs)
{
Log.Warning("Attempted to resolve assembly {Name} by {RequestingAssembly}", resolveEventArgs.Name, resolveEventArgs.RequestingAssembly?.GetName().Name);
return null;
}
[SuppressMessage("Design", "CA1050:Declare types in namespaces")]
[SuppressMessage("ReSharper", "NotAccessedPositionalProperty.Global")]
public record Order(Guid Id);
[SuppressMessage("Design", "CA1050:Declare types in namespaces")]
[SuppressMessage("ReSharper", "NotAccessedPositionalProperty.Global")]
public record Customer(Guid Id, List<Order> Orders);