Exemple #1
0
        private ParamContext InitContext <T>(string methodXml, int fxIndex, bool forceAlignment = false, string ns1 = "mdoc.Test", string ns2 = "mdoc.Test2")
        {
            Func <int, bool> indexCheck = fi => fi < 2;

            if (typeof(T) == typeof(MyClass2))
            {
                indexCheck = fi => fi != 1;
            }

            bool useFirst = forceAlignment || indexCheck(fxIndex);
            var  doc      = new XmlDocument();

            //doc.PreserveWhitespace = true;
            doc.LoadXml(methodXml);
            var        beforeXML = doc.OuterXml;
            XmlElement root      = doc.SelectSingleNode("//Docs") as XmlElement; // Docs

            TypeDefinition type        = GetDefinition <T> (ns1);
            var            method      = type.Methods.First(m => m.Name == "Meth") as MethodReference;
            var            parameters  = method.Parameters.ToList();
            TypeDefinition type2       = GetDefinition <T> (ns2);
            var            method2     = type2.Methods.First(m => m.Name == "Meth") as MethodReference;
            var            parameters2 = method2.Parameters.ToList();

            // updater
            var updater = new MDocUpdater();
            var fx      = new FrameworkIndex("", 3, null);

            fx.Frameworks.Add(new FrameworkEntry(fx.Frameworks, fx.Frameworks)
            {
                Id = "One", Name = "One", Replace = ns2, With = ns1
            });
            fx.Frameworks.Add(new FrameworkEntry(fx.Frameworks, fx.Frameworks)
            {
                Id = "Three", Name = "Three", Replace = ns2, With = ns1
            });
            fx.Frameworks.Add(new FrameworkEntry(fx.Frameworks, fx.Frameworks)
            {
                Id = "Two", Name = "Two", Replace = ns2, With = ns1
            });

            var i = 0;

            foreach (var f in fx.Frameworks)
            {
                if (indexCheck(i) || forceAlignment)
                {
                    var t = f.ProcessType(type, type.Module.Assembly);
                    t.ProcessMember(method);

                    var aset = new AssemblySet(new[] { "one.dll" });
                    f.AddAssemblySet(aset);
                }
                else
                {
                    var t = f.ProcessType(type2, type2.Module.Assembly);
                    t.ProcessMember(method2);
                }
                i++;
            }

            updater.InitializeFrameworksCache(fx);

            return(new ParamContext()
            {
                doc = doc,
                beforeXML = beforeXML,
                method = useFirst ? method : method2,
                parameters = useFirst ? parameters : parameters2,
                fx = fx,
                updater = updater
            });
        }