コード例 #1
0
        public override AbiDefinition ReadJson(
            JsonReader reader,
            Type objectType,
            AbiDefinition existingValue,
            bool hasExistingValue,
            JsonSerializer serializer)
        {
            JToken topLevelToken = JToken.Load(reader);

            existingValue ??= new AbiDefinition();

            JToken abiToken;

            if (topLevelToken.Type == JTokenType.Object)
            {
                abiToken = topLevelToken["abi"];
                byte[] bytecode         = Bytes.FromHexString(topLevelToken["bytecode"]?.Value <string>() ?? string.Empty);
                byte[] deployedBytecode = Bytes.FromHexString(topLevelToken["deployedBytecode"]?.Value <string>() ?? string.Empty);
                existingValue.SetBytecode(bytecode);
                existingValue.SetDeployedBytecode(deployedBytecode);
            }
            else
            {
                abiToken = topLevelToken;
            }

            foreach (var definitionToken in abiToken?.Children() ?? Enumerable.Empty <JToken>())
            {
                string name      = definitionToken[_nameTokenName]?.Value <string>();
                JToken typeToken = definitionToken[_typeTokenName];
                if (typeToken == null)
                {
                    continue;
                }

                AbiDescriptionType type = FastEnum.Parse <AbiDescriptionType>(typeToken.Value <string>(), true);

                if (type == AbiDescriptionType.Event)
                {
                    AbiEventDescription abiEvent = new();
                    serializer.Populate(definitionToken.CreateReader(), abiEvent);
                    existingValue.Add(abiEvent);
                }
                else if (type == AbiDescriptionType.Error)
                {
                    AbiErrorDescription abiError = new();
                    serializer.Populate(definitionToken.CreateReader(), abiError);
                    existingValue.Add(abiError);
                }
                else
                {
                    AbiFunctionDescription abiFunction = new();
                    serializer.Populate(definitionToken.CreateReader(), abiFunction);
                    existingValue.Add(abiFunction);
                }
            }

            return(existingValue);
        }
コード例 #2
0
ファイル: EmptyTest.cs プロジェクト: yamuun/FastEnum
 public void ParseIgnoreCase()
 => FluentActions.Invoking(() => FastEnum.Parse <TEnum>("ABCDE", true)).Should().Throw <ArgumentException>();