Mirror.Weaver.SyncListProcessor.Process C# (CSharp) Method

Process() public static method

Generates serialization methods for synclists
public static Process ( TypeDefinition td, TypeReference mirrorBaseType ) : void
td TypeDefinition The synclist class
mirrorBaseType TypeReference the base SyncObject td inherits from
return void
        public static void Process(TypeDefinition td, TypeReference mirrorBaseType)
        {
            GenericArgumentResolver resolver = new GenericArgumentResolver(1);

            if (resolver.GetGenericFromBaseClass(td, 0, mirrorBaseType, out TypeReference itemType))
            {
                SyncObjectProcessor.GenerateSerialization(td, itemType, mirrorBaseType, "SerializeItem", "DeserializeItem");
            }
            else
            {
                Weaver.Error($"Could not find generic arguments for {mirrorBaseType.Name} in {td}", td);
            }
        }
    }

Usage Example

Exemplo n.º 1
0
        private static bool CheckSyncList(TypeDefinition td)
        {
            if (!td.IsClass)
            {
                return(false);
            }

            var didWork = false;

            // are ANY parent classes SyncListStruct
            var parent = td.BaseType;

            while (parent != null)
            {
                if (parent.FullName.StartsWith(SyncListType.FullName, StringComparison.Ordinal))
                {
                    SyncListProcessor.Process(td);
                    didWork = true;
                    break;
                }

                if (parent.FullName.StartsWith(SyncSetType.FullName, StringComparison.Ordinal))
                {
                    SyncListProcessor.Process(td);
                    didWork = true;
                    break;
                }

                if (parent.FullName.StartsWith(SyncDictionaryType.FullName, StringComparison.Ordinal))
                {
                    SyncDictionaryProcessor.Process(td);
                    didWork = true;
                    break;
                }

                try
                {
                    parent = parent.Resolve().BaseType;
                }
                catch (AssemblyResolutionException)
                {
                    // this can happen for pluins.
                    //Console.WriteLine("AssemblyResolutionException: "+ ex.ToString());
                    break;
                }
            }

            // check for embedded types
            foreach (var embedded in td.NestedTypes)
            {
                didWork |= CheckSyncList(embedded);
            }

            return(didWork);
        }
All Usage Examples Of Mirror.Weaver.SyncListProcessor::Process
SyncListProcessor