ArcGIS Pro 3.0 API Reference Guide
ArcGIS.Core.Data Namespace / PostOptions Class
Members Example

PostOptions Class
Represents a mechanism to post a Version.
Object Model
PostOptions ClassVersion Class
Syntax
public sealed class PostOptions 
Example
Reconciling and Posting a Version with its Parent in separate edit sessions
public void ReconcileAndPost(Geodatabase geodatabase)
{
  // Get a reference to our version and our parent
  if (geodatabase.IsVersioningSupported())
  {
    using (VersionManager versionManager = geodatabase.GetVersionManager())
    using (Version currentVersion = versionManager.GetCurrentVersion())
    using (Version parentVersion = currentVersion.GetParent())
    {

      //// Create a ReconcileDescription object
      //At 2.x - 
      //ReconcileDescription reconcileDescription = new ReconcileDescription(parentVersion);
      //reconcileDescription.ConflictResolutionMethod = ConflictResolutionMethod.Continue; // continue if conflicts are found
      //reconcileDescription.WithPost = true;

      //// Reconcile and post
      //ReconcileResult reconcileResult = currentVersion.Reconcile(reconcileDescription);

      // ReconcileResult.HasConflicts can be checked as-needed

      // Create a ReconcileOptions object
      var reconcileOptions = new ReconcileOptions(parentVersion);
      reconcileOptions.ConflictResolutionMethod = ConflictResolutionMethod.Continue; // continue if conflicts are found
      reconcileOptions.ConflictDetectionType = ConflictDetectionType.ByRow; //Default
      reconcileOptions.ConflictResolutionType = ConflictResolutionType.FavorTargetVersion;//or FavorEditVersion

      // Reconcile
      ReconcileResult reconcileResult = currentVersion.Reconcile(reconcileOptions);
      if (!reconcileResult.HasConflicts)
      {
        //No conflicts, perform the post
        var postOptions = new PostOptions(parentVersion);
        //var postOptions = new PostOptions(); for default version
        postOptions.ServiceSynchronizationType = ServiceSynchronizationType.Synchronous;//Default
        currentVersion.Post(postOptions);
      }

    }
  }
}
Reconciling and Posting a Version with its Parent in the same edit session
public void ReconcileAndPost2(Geodatabase geodatabase)
{
  // Get a reference to our version and our parent
  if (geodatabase.IsVersioningSupported())
  {
    using (VersionManager versionManager = geodatabase.GetVersionManager())
    using (Version currentVersion = versionManager.GetCurrentVersion())
    using (Version parentVersion = currentVersion.GetParent())
    {

      //// Create a ReconcileDescription object
      //At 2.x - 
      //ReconcileDescription reconcileDescription = new ReconcileDescription(parentVersion);
      //reconcileDescription.ConflictResolutionMethod = ConflictResolutionMethod.Continue; // continue if conflicts are found
      //reconcileDescription.WithPost = true;

      //// Reconcile and post
      //ReconcileResult reconcileResult = currentVersion.Reconcile(reconcileDescription);

      // ReconcileResult.HasConflicts can be checked as-needed

      // Create a ReconcileOptions object
      var reconcileOptions = new ReconcileOptions(parentVersion);
      reconcileOptions.ConflictResolutionMethod = ConflictResolutionMethod.Continue; // continue if conflicts are found
      reconcileOptions.ConflictDetectionType = ConflictDetectionType.ByRow; //Default
      reconcileOptions.ConflictResolutionType = ConflictResolutionType.FavorTargetVersion;//or FavorEditVersion
      
      var postOptions = new PostOptions(parentVersion);
      //var postOptions = new PostOptions(); for default version
      postOptions.ServiceSynchronizationType = ServiceSynchronizationType.Synchronous;//Default

      // Reconcile
      ReconcileResult reconcileResult = currentVersion.Reconcile(reconcileOptions, postOptions);
      if (reconcileResult.HasConflicts)
      {
        //TODO resolve conflicts

      }

    }
  }
}
Partial Posting
// Partial posting allows developers to post a subset of changes made in a version.
// One sample use case is an electric utility that uses a version to design the facilities in
// a new housing subdivision. At some point in the process, one block of new houses have been
// completed, while the rest of the subdivision remains unbuilt.  Partial posting allows the user
// to post the completed work, while leaving not yet constructed features in the version to be
// posted later. Partial posting requires a branch-versioned feature service using ArcGIS
// Enterprise 10.9 and higher

// Specify a set of features that were constructed
QueryFilter constructedFilter = new QueryFilter()
{
  WhereClause = "ConstructedStatus = 'True'"
};
// This selection represents the inserts and updates to the support
// structure feature class that we wish to post
using (Selection constructedSupportStructures = 
    supportStructureFeatureClass.Select(
      constructedFilter, SelectionType.ObjectID, SelectionOption.Normal))
{
  // Specifying which feature deletions you wish to post is slightly trickier, since you cannot issue
  // a query to fetch a set of deleted features Instead, a list of ObjectIDs must be used
  using (Selection deletedSupportStructures = supportStructureFeatureClass.Select(
                                      null, SelectionType.ObjectID, SelectionOption.Empty))
  {
    deletedSupportStructures.Add(deletedSupportStructureObjectIDs);  //deletedSupportStructureObjectIDs is
                                                                     //defined as List<long>

    //Perform the reconcile with partial post
    //At 2.x - 
    //ReconcileDescription reconcileDescription = new ReconcileDescription();
    //reconcileDescription.ConflictDetectionType = ConflictDetectionType.ByColumn;
    //reconcileDescription.ConflictResolutionMethod = ConflictResolutionMethod.Continue;
    //reconcileDescription.ConflictResolutionType = ConflictResolutionType.FavorEditVersion;
    //reconcileDescription.PartialPostSelections = new List<Selection>() { constructedSupportStructures, deletedSupportStructures };
    //reconcileDescription.WithPost = true;

    //ReconcileResult reconcileResult = designVersion.Reconcile(reconcileDescription);

    var reconcileOptions = new ReconcileOptions();//reconcile against Default
    reconcileOptions.ConflictDetectionType = ConflictDetectionType.ByColumn;
    reconcileOptions.ConflictResolutionMethod = ConflictResolutionMethod.Continue;
    reconcileOptions.ConflictResolutionType = ConflictResolutionType.FavorEditVersion;

    var postOptions = new PostOptions();//post against Default
    postOptions.PartialPostSelections = new List<Selection>() { 
                    constructedSupportStructures, deletedSupportStructures };
    postOptions.ServiceSynchronizationType = ServiceSynchronizationType.Synchronous;

    var reconcileResult = designVersion.Reconcile(reconcileOptions, postOptions);

    //TODO process result(s)
  }
}
Inheritance Hierarchy

System.Object
   ArcGIS.Core.Data.PostOptions

Requirements

Target Platforms: Windows 11, Windows 10, Windows 8.1

ArcGIS Pro version: 3.0 or higher.
See Also