internal static object?GetImplementation(Type baseType, params object[] args) { if (!LatestImplementations.ContainsKey(baseType.FullName())) { return(null); } var latestImplementationType = LatestImplementations[baseType.FullName()]; return(Activator.CreateInstance(latestImplementationType, args)); }
internal static object?GetImplementation(Type baseType, Type wrapperType, params object[] args) { if (!LatestImplementations.ContainsKey(baseType.FullName())) { return(null); } var latestImplementationType = LatestImplementations[baseType.FullName()]; var obj = Activator.CreateInstance(latestImplementationType, args); return(baseType.IsAssignableFrom(latestImplementationType) ? obj : Activator.CreateInstance(wrapperType, obj) is IWrapper wrapperObject && wrapperObject.IsCorrect ? wrapperObject : null); }