aboutsummaryrefslogtreecommitdiff
path: root/Jellyfin.Api/Helpers/ClassMigrationHelper.cs
diff options
context:
space:
mode:
authorClaus Vium <cvium@users.noreply.github.com>2021-12-15 08:38:39 +0100
committerGitHub <noreply@github.com>2021-12-15 08:38:39 +0100
commit9a0618552b87241537590e77c70cfdbac2b0b8ce (patch)
treeefc0d946cd6fc9db7b09e85cfa4185120e007c57 /Jellyfin.Api/Helpers/ClassMigrationHelper.cs
parentc3c4dc6839d19cda8b0ea3cdcdc84547a713506d (diff)
parent4a58582ad588eae0571eb6e7f1c830d5550709ea (diff)
Merge branch 'master' into what_could_go_wrong
Diffstat (limited to 'Jellyfin.Api/Helpers/ClassMigrationHelper.cs')
-rw-r--r--Jellyfin.Api/Helpers/ClassMigrationHelper.cs71
1 files changed, 0 insertions, 71 deletions
diff --git a/Jellyfin.Api/Helpers/ClassMigrationHelper.cs b/Jellyfin.Api/Helpers/ClassMigrationHelper.cs
deleted file mode 100644
index 76fb27bcc..000000000
--- a/Jellyfin.Api/Helpers/ClassMigrationHelper.cs
+++ /dev/null
@@ -1,71 +0,0 @@
-using System;
-using System.Reflection;
-
-namespace Jellyfin.Api.Helpers
-{
- /// <summary>
- /// A static class for copying matching properties from one object to another.
- /// TODO: remove at the point when a fixed migration path has been decided upon.
- /// </summary>
- public static class ClassMigrationHelper
- {
- /// <summary>
- /// Extension for 'Object' that copies the properties to a destination object.
- /// </summary>
- /// <param name="source">The source.</param>
- /// <param name="destination">The destination.</param>
- public static void CopyProperties(this object source, object destination)
- {
- // If any this null throw an exception.
- if (source == null || destination == null)
- {
- throw new ArgumentException("Source or/and Destination Objects are null");
- }
-
- // Getting the Types of the objects.
- Type typeDest = destination.GetType();
- Type typeSrc = source.GetType();
-
- // Iterate the Properties of the source instance and populate them from their destination counterparts.
- PropertyInfo[] srcProps = typeSrc.GetProperties();
- foreach (PropertyInfo srcProp in srcProps)
- {
- if (!srcProp.CanRead)
- {
- continue;
- }
-
- var targetProperty = typeDest.GetProperty(srcProp.Name);
- if (targetProperty == null)
- {
- continue;
- }
-
- if (!targetProperty.CanWrite)
- {
- continue;
- }
-
- var obj = targetProperty.GetSetMethod(true);
- if (obj != null && obj.IsPrivate)
- {
- continue;
- }
-
- var target = targetProperty.GetSetMethod();
- if (target != null && (target.Attributes & MethodAttributes.Static) != 0)
- {
- continue;
- }
-
- if (!targetProperty.PropertyType.IsAssignableFrom(srcProp.PropertyType))
- {
- continue;
- }
-
- // Passed all tests, lets set the value.
- targetProperty.SetValue(destination, srcProp.GetValue(source, null), null);
- }
- }
- }
-}