/// <summary> /// Gets the value of a given property on the given task. /// </summary> internal object GetPropertyValue(ITask task, TaskPropertyInfo property) { ErrorUtilities.VerifyThrowArgumentNull(task, "task"); ErrorUtilities.VerifyThrowArgumentNull(property, "property"); IGeneratedTask generatedTask = task as IGeneratedTask; if (generatedTask != null) { return(generatedTask.GetPropertyValue(property)); } else { ReflectableTaskPropertyInfo propertyInfo = property as ReflectableTaskPropertyInfo; if (propertyInfo != null) { return(propertyInfo.Reflection.GetValue(task, null)); } else { ErrorUtilities.ThrowInternalError("Task does not implement IGeneratedTask and we don't have {0} either.", typeof(ReflectableTaskPropertyInfo).Name); throw new InternalErrorException(); // unreachable } } }
/// <summary> /// Sets the given property on the task. /// </summary> internal void SetPropertyValue(ITask task, TaskPropertyInfo property, object value) { ErrorUtilities.VerifyThrowArgumentNull(task, "task"); ErrorUtilities.VerifyThrowArgumentNull(property, "property"); IGeneratedTask generatedTask = task as IGeneratedTask; if (generatedTask != null) { generatedTask.SetPropertyValue(property, value); } else { ReflectableTaskPropertyInfo propertyInfo = (ReflectableTaskPropertyInfo)property; propertyInfo.Reflection.SetValue(task, value, null); } }