Example #1
0
 public DefaultSsslConverter(ObjectConversionOptions objectConversionOptions)
 {
     _objectConversionOptions = objectConversionOptions;
 }
Example #2
0
        public static bool TryConvertTo(ISsslConverter converter, SsslObject sssl, Type type, ObjectConversionOptions options, [NotNullWhen(true)] out object result)
        {
            var allowUnknownMember = options.HasFlag(ObjectConversionOptions.AllowUnknownMember);
            var allowMissingMember = options.HasFlag(ObjectConversionOptions.AllowMissingMember);

            result = null !;

            if (!(sssl is SsslRecord record))
            {
                return(false);
            }

            if (record.Name != "" && !type.IsSealed && record.Name != type.GetFullName())
            {
                if (type.Assembly.GetType(record.Name) is { } assemblyInnerType&&
                    type.IsAssignableFrom(assemblyInnerType))
                {
                    type = assemblyInnerType;
                }
                if (Type.GetType(record.Name) is { } coreType&&
                    type.IsAssignableFrom(coreType))
                {
                    type = coreType;
                }
                else if (AppDomain.CurrentDomain
                         .GetAssemblies()
                         .Select(x => x.GetType(record.Name))
                         .FirstOrDefault(x => x is { } && type.IsAssignableFrom(x)) is { } otherType&&