public PerformanceCounterDefinition(string path)
        {
            Must.NotBeNull(() => path);

            if (!path.StartsWith("\\"))
            {
                throw new ArgumentException("'path' must begin with a '\\'");
            }

            var keyTokens = path.Split(KeySeparator);

            if (keyTokens.Length < 3)
            {
                throw new ArgumentException("'path' must contain a Category and Counter", path);
            }

            CategoryName = keyTokens[1];
            CounterName  = keyTokens[2];

            if (CategoryName.Contains("(") && CategoryName.Contains(")"))
            {
                var categoryNameTokens = CategoryName.Split('(', ')');
                CategoryName = categoryNameTokens[0];
                InstanceName = categoryNameTokens[1];
            }
        }
        private void CanOnlyContainAlphanumericOrUnderscore(string querySource)
        {
            Must.NotBeNull(() => querySource);

            if (!querySource.All(l => char.IsLetterOrDigit(l) || l == '_'))
            {
                throw new ArgumentException("The query source specified for a WMI query can only contain letters, digits or underscore ('_')", querySource);
            }
        }
示例#3
0
 /// <summary>
 ///   Constructs a ComponentModel
 /// </summary>
 public ComponentModel(ComponentName name, ICollection <Type> services, Type implementation, Arguments extendedProperties)
 {
     componentName           = Must.NotBeNull(name, "name");
     Implementation          = Must.NotBeNull(implementation, "implementation");
     this.extendedProperties = extendedProperties;
     services = Must.NotBeEmpty(services, "services");
     foreach (var type in services)
     {
         AddService(type);
     }
 }
示例#4
0
        private static string Sanitise(string formatted)
        {
            Must.NotBeNull(() => formatted);

            var charArray = formatted.ToCharArray();

            charArray = Array.FindAll(charArray, c => char.IsLetterOrDigit(c) ||
                                      c == '-' ||
                                      c == '_' ||
                                      c == '.');
            return(new string(charArray));
        }
        public WindowsManagementInstrumentationDefinition(string path)
        {
            Must.NotBeNull(() => path);

            var keyTokens = path.Split(KeySeparator);

            if (keyTokens.Length < 3)
            {
                throw new ArgumentException("'path' must contain a QuerySource and PropertyName", path);
            }

            QuerySource = keyTokens[1];

            CanOnlyContainAlphanumericOrUnderscore(QuerySource);

            PropertyName = keyTokens[2];
        }