コード例 #1
0
ファイル: TaskDatabase.cs プロジェクト: raj581/Marvin
        public Type GetTypeFromClassName(string classname)
        {
            Type ret = GetTypeFromClassNameInternal(classname);

            if (ret == null)
            {
                // Task not already loaded,
                // Check list of pending UsingTasks
                bool          is_shortname = classname.IndexOf('.') < 0;
                UsingTaskInfo info         = new UsingTaskInfo(String.Empty, null);
                if (is_shortname)
                {
                    // Linear search UsingTaskInfo objects for short name match
                    foreach (UsingTaskInfo ut_info in usingTasksByFullName.Values)
                    {
                        if (String.Compare(ut_info.ShortName, classname, true) == 0)
                        {
                            info = ut_info;
                            break;
                        }
                    }

                    if (info.Task == null)
                    {
                        ThrowTaskNotRegistered(classname);
                    }
                }
                else
                {
                    // Look for full name match
                    if (!usingTasksByFullName.TryGetValue(classname, out info))
                    {
                        ThrowTaskNotRegistered(classname);
                    }
                }

                usingTasksByFullName.Remove(info.Task.TaskName);
                info.Task.Load(this);
                ret = GetTypeFromClassNameInternal(classname);
            }

            if (ret == null)
            {
                ThrowTaskNotRegistered(classname);
            }
            return(ret);
        }
コード例 #2
0
ファイル: TaskDatabase.cs プロジェクト: carrie901/mono
		public Type GetTypeFromClassName (string classname)
		{
			Type ret = GetTypeFromClassNameInternal (classname);
			if (ret == null) {
				// Task not already loaded,
				// Check list of pending UsingTasks
				bool is_shortname = classname.IndexOf ('.') < 0;
				UsingTaskInfo info = new UsingTaskInfo (String.Empty, null);
				if (is_shortname) {
					// Linear search UsingTaskInfo objects for short name match
					foreach (UsingTaskInfo ut_info in usingTasksByFullName.Values) {
						if (String.Compare (ut_info.ShortName, classname, true) == 0) {
							info = ut_info;
							break;
						}
					}

					if (info.Task == null)
						ThrowTaskNotRegistered (classname);
				} else {
					// Look for full name match
					if (!usingTasksByFullName.TryGetValue (classname, out info))
						ThrowTaskNotRegistered (classname);
				}

				usingTasksByFullName.Remove (info.Task.TaskName);
				info.Task.Load (this);
				ret = GetTypeFromClassNameInternal (classname);
			}

			if (ret == null)
				ThrowTaskNotRegistered (classname);
			return ret;
		}