ClrPlus.Scripting.Languages.PropertySheetV3.Mapping.View.TryConvert C# (CSharp) Метод

TryConvert() публичный Метод

public TryConvert ( ConvertBinder binder, object &result ) : bool
binder ConvertBinder
result object
Результат bool
        public override bool TryConvert(ConvertBinder binder, out object result)
        {
            if (binder.Type == typeof (string[])) {
                result = Values;
                return true;
            }

            var ppi = binder.Type.GetPersistableInfo();
            switch (ppi.PersistableCategory) {
                case PersistableCategory.String:
                    result = Value;
                    return true;

                case PersistableCategory.Nullable:
                case PersistableCategory.Parseable:
                    result = binder.Type.ParseString(Value);
                    return true;

                case PersistableCategory.Array:
                case PersistableCategory.Enumerable:
                    if (ppi.ElementType.IsParsable()) {
                        result = Values.Select(each => ppi.ElementType.ParseString(each)).ToArrayOfType(ppi.ElementType);
                        return true;
                    }
                    break;

                case PersistableCategory.Enumeration:
                    var value = Value;
                    if (Enum.IsDefined(binder.Type, value)) {
                        result = Enum.Parse(binder.Type, value, true);
                        return true;
                    }
                    break;
            }

            result = map.ComputedValue;
            return true;
        }