// Create project instance System::String dataDir = RunExamples::GetDataDir(System::Reflection::MethodBase::GetCurrentMethod(ASPOSE_CURRENT_FUNCTION)->get_DeclaringType().get_FullName()); System::SharedPtr project1 = System::MakeObject(dataDir + u"ReadTaskExtendedAttributes.mpp"); // Read extended attributes for tasks { auto tsk_enumerator = (project1->get_RootTask()->get_Children())->GetEnumerator(); decltype(tsk_enumerator->get_Current()) tsk; while (tsk_enumerator->MoveNext() && (tsk = tsk_enumerator->get_Current(), true)) { auto ea_enumerator = (tsk->get_ExtendedAttributes())->GetEnumerator(); decltype(ea_enumerator->get_Current()) ea; while (ea_enumerator->MoveNext() && (ea = ea_enumerator->get_Current(), true)) { System::Console::WriteLine(ea->get_FieldId()); System::Console::WriteLine(ea->get_ValueGuid()); switch (ea->get_AttributeDefinition()->get_CfType()) { case Aspose::Tasks::CustomFieldType::Date: case Aspose::Tasks::CustomFieldType::Start: case Aspose::Tasks::CustomFieldType::Finish: System::Console::WriteLine(System::ObjectExt::Box(ea->get_DateValue())); break; case Aspose::Tasks::CustomFieldType::Text: System::Console::WriteLine(ea->get_TextValue()); break; case Aspose::Tasks::CustomFieldType::Duration: System::Console::WriteLine(System::ObjectExt::ToString(ea->get_DurationValue())); break; case Aspose::Tasks::CustomFieldType::Cost: case Aspose::Tasks::CustomFieldType::Number: System::Console::WriteLine(ea->get_NumericValue()); break; case Aspose::Tasks::CustomFieldType::Flag: System::Console::WriteLine(ea->get_FlagValue()); break; default: break; } } } }