public static void AddTypeElement(Type genericType, Type[] genericTypeParameters, DotNetNativePolicy activate = null, DotNetNativePolicy browse = null, DotNetNativePolicy dynamic = null,
                                   DotNetNativePolicy serialize     = null, DotNetNativePolicy dataContractSerializer = null, DotNetNativePolicy dataContractJsonSerializer         = null,
                                   DotNetNativePolicy xmlSerializer = null, DotNetNativePolicy marshalObject          = null, DotNetNativePolicy marshalDelegate = null, DotNetNativePolicy marshalStructure = null)
 {
     if (!IsEnabled)
     {
         return;
     }
     AddTypeElement(GetGenericTypeName(genericType, genericTypeParameters), activate, browse, dynamic, serialize, dataContractSerializer, dataContractJsonSerializer, xmlSerializer, marshalObject, marshalDelegate, marshalStructure);
 }
 private void WritePolicy(TextWriter stream, string policyName, DotNetNativePolicy policyValue)
 {
     if (policyValue != null)
     {
         stream.Write(" ");
         stream.Write(policyName);
         stream.Write("=\"");
         string textValue = policyValue.ToString();
         if (textValue.StartsWith("Required") && textValue.Length != 8)
         {
             textValue = textValue.Insert(8, " ");
         }
         stream.Write(textValue);
         stream.Write("\"");
     }
 }
        public static DotNetNativeAssistantTypeElement AddTypeElement(string typeName, DotNetNativePolicy activate = null, DotNetNativePolicy browse     = null, DotNetNativePolicy dynamic = null,
                                                                      DotNetNativePolicy serialize     = null, DotNetNativePolicy dataContractSerializer = null, DotNetNativePolicy dataContractJsonSerializer = null,
                                                                      DotNetNativePolicy xmlSerializer = null, DotNetNativePolicy marshalObject          = null, DotNetNativePolicy marshalDelegate = null, DotNetNativePolicy marshalStructure = null)
        {
            if (!IsEnabled)
            {
                return(null);
            }
            DotNetNativeAssistantTypeElement typeElement = FindTypeElement(typeName);

            if (typeElement == null)
            {
                typeElement = new DotNetNativeAssistantTypeElement()
                {
                    TypeName = typeName
                };
                Elements.Add(typeElement);
            }
            else
            {
                if (!typeElement.IsEmpty)
                {
                    typeElement.Clear();
                }
            }
            typeElement.Activate  = activate;
            typeElement.Browse    = browse;
            typeElement.Dynamic   = dynamic;
            typeElement.Serialize = serialize;
            typeElement.DataContractSerializer     = dataContractJsonSerializer;
            typeElement.DataContractJsonSerializer = dataContractJsonSerializer;
            typeElement.XmlSerializer    = xmlSerializer;
            typeElement.MarshalObject    = marshalObject;
            typeElement.MarshalDelegate  = marshalDelegate;
            typeElement.MarshalStructure = marshalStructure;
            return(typeElement);
        }
        public static void AddMethodInstantiationElement(string typeName, string methodName, string arguments, DotNetNativePolicy browse = null, DotNetNativePolicy dynamic = null)
        {
            DotNetNativeAssistantTypeElement element = FindTypeElement(typeName);

            if (element == null)
            {
                element = new DotNetNativeAssistantTypeElement()
                {
                    TypeName = typeName
                };
                Elements.Add(element);
            }
            else
            {
                if (element.IsEmpty)
                {
                    return;
                }
            }
            DotNetNativeAssistantMethodInstantiationElement methodInstantiation = element.FindMethodInstantiationElement(typeName, arguments);

            if (methodInstantiation == null)
            {
                methodInstantiation = new DotNetNativeAssistantMethodInstantiationElement(element)
                {
                    MethodName = methodName, Arguments = arguments
                };
                element.MethodInstantiationElements.Add(methodInstantiation);
            }
            methodInstantiation.Browse  = browse;
            methodInstantiation.Dynamic = dynamic;
        }
        public static void AddMethodInstantiationElement(Type type, string genericMethodName, Type[] typeArguments, DotNetNativePolicy browse = null, DotNetNativePolicy dynamic = null)
        {
            if (!IsEnabled)
            {
                return;
            }
            string        typeName = FixTypeName(type.FullName);
            StringBuilder builder  = new StringBuilder();

            ConcatGenericArguments(typeArguments, builder);
            string arguments = builder.ToString();

            AddMethodInstantiationElement(typeName, genericMethodName, arguments, browse, dynamic);
        }