| 123456789101112131415161718192021222324252627282930313233343536373839 |
- using System;
- using System.IO;
- using System.Linq.Expressions;
- using System.Reflection;
- namespace QuestPDF.Helpers
- {
- internal static class Helpers
- {
- internal static byte[] LoadEmbeddedResource(string resourceName)
- {
- using var stream = Assembly.GetExecutingAssembly().GetManifestResourceStream(resourceName);
- using var reader = new BinaryReader(stream);
-
- return reader.ReadBytes((int) stream.Length);
- }
-
- private static PropertyInfo? ToPropertyInfo<T, TValue>(this Expression<Func<T, TValue>> selector)
- {
- return (selector.Body as MemberExpression)?.Member as PropertyInfo;
- }
-
- internal static string? GetPropertyName<T, TValue>(this Expression<Func<T, TValue>> selector) where TValue : class
- {
- return selector.ToPropertyInfo()?.Name;
- }
-
- internal static TValue? GetPropertyValue<T, TValue>(this T target, Expression<Func<T, TValue>> selector) where TValue : class
- {
- return selector.ToPropertyInfo()?.GetValue(target) as TValue;
- }
-
- internal static void SetPropertyValue<T, TValue>(this T target, Expression<Func<T, TValue>> selector, TValue value)
- {
- var property = selector.ToPropertyInfo() ?? throw new Exception("Expected property with getter and setter.");
- property?.SetValue(target, value);
- }
- }
- }
|