Beispiel #1
0
        public bool TryGetInstance <T, P>(RegistryComponent component, Enum subComponent, out T instance, P factoryParam, out FaultDefinition faultDefinition, [CallerMemberName] string callerMember = null, [CallerFilePath] string callerFilePath = null, [CallerLineNumber] int callerLineNumber = 0) where T : class where P : class
        {
            faultDefinition = null;
            int num = Convert.ToInt32(subComponent);

            if (this.registryTable[(int)component] != null && this.registryTable[(int)component].Length > num)
            {
                object obj = this.registryTable[(int)component][num];
                if (obj != null)
                {
                    if (!(obj is Delegate))
                    {
                        instance = (obj as T);
                        return(instance != null);
                    }
                    Func <P, T> func = obj as Func <P, T>;
                    if (func != null)
                    {
                        instance = func(factoryParam);
                        return(instance != null);
                    }
                }
            }
            faultDefinition = FaultDefinition.FromErrorString(string.Format("REGISTRY: Could not find a type {0}, for component {1} and sub component {2}", typeof(T), component, subComponent), "TryGetInstance", "f:\\15.00.1497\\sources\\dev\\EDiscovery\\src\\TaskDistributionSystem\\TaskDistributionCommon\\Extensibility\\Registry.cs", 157);
            instance        = default(T);
            return(false);
        }
Beispiel #2
0
        private void AddTableEntry(RegistryComponent component, Enum subComponent, object entry)
        {
            int num = Convert.ToInt32(subComponent);

            if (this.registryTable[(int)component] == null)
            {
                this.registryTable[(int)component] = new object[this.GetEnumTableSize(subComponent)];
            }
            this.registryTable[(int)component][num] = entry;
        }
Beispiel #3
0
 public void RegisterFactory <T, P>(RegistryComponent component, Enum subComponent, Func <P, T> factory) where T : class where P : class
 {
     this.AddTableEntry(component, subComponent, factory);
 }
Beispiel #4
0
 public bool TryGetInstance <T>(RegistryComponent component, Enum subComponent, out T instance, out FaultDefinition faultDefinition, [CallerMemberName] string callerMember = null, [CallerFilePath] string callerFilePath = null, [CallerLineNumber] int callerLineNumber = 0) where T : class
 {
     return(this.TryGetInstance <T, object>(component, subComponent, out instance, null, out faultDefinition, callerMember, callerFilePath, callerLineNumber));
 }
Beispiel #5
0
 public void RegisterInstance <T>(RegistryComponent component, Enum subComponent, T instance) where T : class
 {
     this.AddTableEntry(component, subComponent, instance);
 }