Example #1
0
        static SystemXsltExecutable()
        {
            if (CLR.IsMono)
            {
                monoTransform = (MonoTransform)Delegate.CreateDelegate(typeof(MonoTransform), typeof(XslCompiledTransform).GetMethod("Transform", BindingFlags.Instance | BindingFlags.NonPublic, null, new Type[] { typeof(XPathNavigator), typeof(XsltArgumentList), typeof(XmlWriter), typeof(XmlResolver) }, null));
            }
            else
            {
                commandField = typeof(XslCompiledTransform).GetField("command", BindingFlags.Instance | BindingFlags.NonPublic);

                ParameterExpression commandParam   = Expression.Parameter(typeof(object), "instance");
                ParameterExpression inputParam     = Expression.Parameter(typeof(IXPathNavigable), "input");
                ParameterExpression resolverParam  = Expression.Parameter(typeof(XmlResolver), "resolver");
                ParameterExpression argumentsParam = Expression.Parameter(typeof(XsltArgumentList), "arguments");
                ParameterExpression writerParam    = Expression.Parameter(typeof(XmlWriter), "writer");

                MethodInfo           executeMethod     = commandField.FieldType.GetMethod("Execute", BindingFlags.Instance | BindingFlags.Public, null, new Type[] { typeof(IXPathNavigable), typeof(XmlResolver), typeof(XsltArgumentList), typeof(XmlWriter) }, null);
                MethodCallExpression executeMethodExpr = Expression.Call(Expression.Convert(commandParam, commandField.FieldType), executeMethod, inputParam, resolverParam, argumentsParam, writerParam);
                net20Transform = Expression.Lambda <Net20Transform>(executeMethodExpr, commandParam, inputParam, resolverParam, argumentsParam, writerParam).Compile();
            }
        }
Example #2
0
      static SystemXsltExecutable() {

         if (CLR.IsMono) {
            monoTransform = (MonoTransform)Delegate.CreateDelegate(typeof(MonoTransform), typeof(XslCompiledTransform).GetMethod("Transform", BindingFlags.Instance | BindingFlags.NonPublic, null, new Type[] { typeof(XPathNavigator), typeof(XsltArgumentList), typeof(XmlWriter), typeof(XmlResolver) }, null));
         } else {

            commandField = typeof(XslCompiledTransform).GetField("command", BindingFlags.Instance | BindingFlags.NonPublic);

            ParameterExpression commandParam = Expression.Parameter(typeof(object), "instance");
            ParameterExpression inputParam = Expression.Parameter(typeof(IXPathNavigable), "input");
            ParameterExpression resolverParam = Expression.Parameter(typeof(XmlResolver), "resolver");
            ParameterExpression argumentsParam = Expression.Parameter(typeof(XsltArgumentList), "arguments");
            ParameterExpression writerParam = Expression.Parameter(typeof(XmlWriter), "writer");

            MethodInfo executeMethod = commandField.FieldType.GetMethod("Execute", BindingFlags.Instance | BindingFlags.Public, null, new Type[] { typeof(IXPathNavigable), typeof(XmlResolver), typeof(XsltArgumentList), typeof(XmlWriter) }, null);
            MethodCallExpression executeMethodExpr = Expression.Call(Expression.Convert(commandParam, commandField.FieldType), executeMethod, inputParam, resolverParam, argumentsParam, writerParam);
            net20Transform = Expression.Lambda<Net20Transform>(executeMethodExpr, commandParam, inputParam, resolverParam, argumentsParam, writerParam).Compile();
         }
      }