示例#1
0
        internal IScriptBaseObject[] GetIteratorObjects(Type iteratorType, ProviderInfo provider)
        {
            if (CurrentRootObject == null)
            {
                return(provider.GetAllObjectsOfType(iteratorType.FullName).ToArray());
            }
            if (iteratorType.IsInstanceOfType(CurrentRootObject))
            {
                return(new[] { CurrentRootObject });
            }

            return(provider.GetAllObjectsOfType(iteratorType.FullName, CurrentRootObject).ToArray());
        }
        private void SetupProvider(ProviderInfo providerMock)
        {
            ProviderInfo provider;

            Expect
            .Call(projectInfo.GetIteratorTypeFromProviders("Iterator", out provider))
            .Return(typeof(IScriptBaseObject)).OutRef(providerMock)
            .Repeat.Any();
            Expect.Call(projectInfo.GetIteratorTypeFromProviders("Iterator"))
            .Return(typeof(IScriptBaseObject))
            .Repeat.Any();
            Expect.Call(providerMock.GetAllObjectsOfType(null))
            .IgnoreArguments()
            .Return(new System.Collections.Generic.List <IScriptBaseObject>())
            .Repeat.Any();
        }
示例#3
0
        /// <summary>
        /// Gets the object represented by this Argument from the ProviderInfo
        /// object provided. The ProviderInfo object given should be of the same
        /// type as the one that was used in the construction of this object, and
        /// the same project file should be loaded.</summary>
        /// <param name="providers">The list of ProviderInfos to search for the provider used to get the referenced object.</param>
        /// <returns>The object returned by provider.GetAllObjectsOfType(FullTypeName)[ObjectIndex]</returns>
        internal virtual object GetObject(IEnumerable <ProviderInfo> providers)
        {
            ProviderInfo provider = providers.FirstOrDefault(p => p.GetType().Assembly.FullName == FullProviderAssemblyName);

            if (provider == null)
            {
                log.ErrorFormat("Could not find the provider assembly {0} in the currently loaded providers",
                                FullProviderAssemblyName);
                throw new Exception(string.Format("Could not find the provider assembly {0} in the currently loaded providers", FullProviderAssemblyName));
            }

            IEnumerable <IScriptBaseObject> type = provider.GetAllObjectsOfType(FullTypeName);

            if (type.Count() <= ObjectIndex)
            {
                throw new Exception(
                          string.Format("ObjectIndex was greater than the number of objects returned ({0} > {1} from GetAllObjectsOfType({2})",
                                        ObjectIndex, type.Count(), FullTypeName));
            }
            return(type.ElementAt(ObjectIndex));
        }