public override BookmarkLocation?Deserialize(ISettingsSection?section)
        {
            if (section is null)
            {
                return(null);
            }
            var token            = section.Attribute <uint?>("Token");
            var assemblyFullName = section.Attribute <string>("AssemblyFullName");
            var moduleName       = section.Attribute <string>("ModuleName");
            var isDynamic        = section.Attribute <bool?>("IsDynamic") ?? false;
            var isInMemory       = section.Attribute <bool?>("IsInMemory") ?? false;
            var moduleNameOnly   = section.Attribute <bool?>("ModuleNameOnly") ?? false;

            if (token is null || assemblyFullName is null || moduleName is null)
            {
                return(null);
            }
            var moduleId = new ModuleId(assemblyFullName, moduleName, isDynamic, isInMemory, moduleNameOnly);

            if (!isInMemory && !isDynamic)
            {
                var s = section.Attribute <string>("TokenString");
                if (!string.IsNullOrEmpty(s) && s != GetTokenAsString(moduleId, token.Value))
                {
                    return(null);
                }
            }

            return(DeserializeCore(section, moduleId, token.Value));
        }
        DbgCodeBreakpointFilter?LoadFilter(ISettingsSection?section)
        {
            if (section is null)
            {
                return(null);
            }
            var filter = section.Attribute <string>("Filter");

            if (filter is null)
            {
                return(null);
            }
            return(new DbgCodeBreakpointFilter(filter));
        }
        DbgCodeBreakpointHitCount?LoadHitCount(ISettingsSection?section)
        {
            if (section is null)
            {
                return(null);
            }
            var kind  = section.Attribute <DbgCodeBreakpointHitCountKind?>("Kind");
            var count = section.Attribute <int?>("Count");

            if (kind is null || count is null)
            {
                return(null);
            }
            return(new DbgCodeBreakpointHitCount(kind.Value, count.Value));
        }
        DbgCodeBreakpointCondition?LoadCondition(ISettingsSection?section)
        {
            if (section is null)
            {
                return(null);
            }
            var kind      = section.Attribute <DbgCodeBreakpointConditionKind?>("Kind");
            var condition = section.Attribute <string>("Condition");

            if (kind is null || condition is null)
            {
                return(null);
            }
            return(new DbgCodeBreakpointCondition(kind.Value, condition));
        }
        DbgCodeBreakpointTrace?LoadTrace(ISettingsSection?section)
        {
            if (section is null)
            {
                return(null);
            }
            var message   = section.Attribute <string>("Message");
            var @continue = section.Attribute <bool?>("Continue") ?? true;

            if (message is null)
            {
                return(null);
            }
            return(new DbgCodeBreakpointTrace(message, @continue));
        }
 public abstract BookmarkLocation?Deserialize(ISettingsSection?section);
 public abstract DbgCodeLocation?Deserialize(ISettingsSection?section);