示例#1
0
        ReferenceElement IReferenceParser.Parse(string raw)
        {
            if (!raw.StartsWith(GuidToken, StringComparison.OrdinalIgnoreCase))
            {
                throw new InvalidOperationException();
            }

            ReferenceElement reference = new ReferenceElement();

            //   *\G{00020430-0000-0000-C000-000000000046}#2.0#0#C:\Windows\system32\stdole2.tlb#OLE Automation

            raw = raw.Substring(3);

            string[] parts = raw.Split(PartSplitChar);
            if (parts.Length == 5)
            {
                reference.Guid = Guid.Parse(parts[0]);
                reference.Version = parts[1];
                reference.Reserved = parts[2];
                reference.FileName = parts[3];

                // The file name sometimes features a backslash, which we remove and store in a separate property.
                if (char.IsNumber(reference.FileName.Last()))
                {
                    int iSlash = reference.FileName.LastIndexOf('\\');

                    reference.FileNameTrailer = reference.FileName;
                    reference.FileName = reference.FileName.Substring(0, iSlash);
                    reference.FileNameTrailer = reference.FileNameTrailer.Remove(0, iSlash);
                }

                reference.Name = parts[4];
            }

            return reference;
        }
示例#2
0
 string IReferenceParser.Parse(ReferenceElement reference)
 {
     return reference.ToString();
 }