示例#1
0
        public void Initialize(IPSCommandResolver commandResolver)
        {
            ReadOnlyCollection <PSTypeName> outputType = commandResolver.GetOutputType(this.TaskInvocationInfo.CmdletName);

            this.ClrType    = outputType[0].Type;
            this.KeyMembers = this.ClrType.GetCustomAttributes(typeof(DataServiceKeyAttribute), true).Cast <DataServiceKeyAttribute>().SelectMany((DataServiceKeyAttribute attr) => attr.KeyNames).ToArray <string>();
        }
示例#2
0
 private void LoadEntityNodes(SafeXmlDocument doc, Dictionary <string, ReportingSchema.ReportPropertyCmdletParamMapping[]> reportPropertyCmdletParamMapping)
 {
     using (XmlNodeList xmlNodeList = doc.SelectNodes("/Configuration/Reports/Report"))
     {
         HashSet <string> hashSet = new HashSet <string>(StringComparer.InvariantCultureIgnoreCase);
         foreach (object obj in xmlNodeList)
         {
             XmlNode xmlNode = (XmlNode)obj;
             ReportingSchema.CheckCondition(!string.IsNullOrWhiteSpace(xmlNode.Attributes["Name"].Value) && !string.IsNullOrWhiteSpace(xmlNode.Attributes["Snapin"].Value) && !string.IsNullOrWhiteSpace(xmlNode.Attributes["Cmdlet"].Value), string.Format("Attributes {0}, {1}, {2} of entity should not be empty.", "Name", "Cmdlet", "Snapin"));
             hashSet.Add(xmlNode.Attributes["Snapin"].Value.Trim());
         }
         using (IPSCommandResolver ipscommandResolver = DependencyFactory.CreatePSCommandResolver(hashSet))
         {
             foreach (object obj2 in xmlNodeList)
             {
                 XmlNode xmlNode2   = (XmlNode)obj2;
                 string  text       = xmlNode2.Attributes["Name"].Value.Trim();
                 string  text2      = xmlNode2.Attributes["Cmdlet"].Value.Trim();
                 string  snapinName = xmlNode2.Attributes["Snapin"].Value.Trim();
                 ReportingSchema.CheckCondition(!this.entities.ContainsKey(text), "Duplicate entity in the config file");
                 Dictionary <string, string> dictionary = null;
                 using (XmlNodeList xmlNodeList2 = xmlNode2.SelectNodes("CmdletParameters/CmdletParameter"))
                 {
                     if (xmlNodeList2.Count > 0)
                     {
                         dictionary = new Dictionary <string, string>(xmlNodeList2.Count);
                         foreach (object obj3 in xmlNodeList2)
                         {
                             XmlNode xmlNode3 = (XmlNode)obj3;
                             ReportingSchema.CheckCondition(!string.IsNullOrWhiteSpace(xmlNode3.Attributes["Name"].Value) && !string.IsNullOrWhiteSpace(xmlNode3.Attributes["Value"].Value), "cmdlet parameter name and value should not be empty.");
                             string key   = xmlNode3.Attributes["Name"].Value.Trim();
                             string value = xmlNode3.Attributes["Value"].Value.Trim();
                             dictionary.Add(key, value);
                         }
                     }
                 }
                 Dictionary <string, List <string> > dictionary2 = null;
                 if (reportPropertyCmdletParamMapping.ContainsKey(text2))
                 {
                     dictionary2 = new Dictionary <string, List <string> >(reportPropertyCmdletParamMapping[text2].Length);
                     foreach (ReportingSchema.ReportPropertyCmdletParamMapping reportPropertyCmdletParamMapping2 in reportPropertyCmdletParamMapping[text2])
                     {
                         if (!dictionary2.ContainsKey(reportPropertyCmdletParamMapping2.ReportObjectProperty))
                         {
                             dictionary2.Add(reportPropertyCmdletParamMapping2.ReportObjectProperty, new List <string>());
                         }
                         dictionary2[reportPropertyCmdletParamMapping2.ReportObjectProperty].Add(reportPropertyCmdletParamMapping2.CmdletParameter);
                     }
                 }
                 XmlNode           annotationNode = ReportingSchema.SelectSingleNode(xmlNode2, "Annotation");
                 IReportAnnotation annotation     = DependencyFactory.CreateReportAnnotation(annotationNode);
                 IEntity           entity         = DependencyFactory.CreateEntity(text, new TaskInvocationInfo(text2, snapinName, dictionary), dictionary2, annotation);
                 entity.Initialize(ipscommandResolver);
                 this.entities.Add(text, entity);
             }
         }
     }
 }