I ended up using the Geoprocessing Tool "CreateFeatureclass" to do this operation.
Here's the code in how I did it (pSR is an ISpatialReference set elsewhere and cboType.Text is a selection of Point, Line, or Polygon):
Dim pGxDialog As New ESRI.ArcGIS.CatalogUI.GxDialog
Dim pFCFilter As New ESRI.ArcGIS.Catalog.GxFilterFeatureClasses
Dim pFClass As ESRI.ArcGIS.Geodatabase.IFeatureClass
pGxDialog.Title = "Create a Feature Class"
pGxDialog.Name = ""
pGxDialog.ObjectFilter = pFCFilter
pFClass = CreateFeatureClass(pGxDialog.FinalLocation.FullName, pGxDialog.Name, pSR, cboType.Text, True)
Friend Function CreateFeatureClass(ByVal FCLocation As String, ByVal FCName As String, ByVal pSR As ESRI.ArcGIS.Geometry.ISpatialReference3, ByVal GeometryType As String, Optional ByVal AddLayer As Boolean = False) As ESRI.ArcGIS.Geodatabase.IFeatureClass
Dim CreateFClass As New ESRI.ArcGIS.DataManagementTools.CreateFeatureclass
Dim Result As ESRI.ArcGIS.Geoprocessing.IGeoProcessorResult2
Try
Using releaser As New ESRI.ArcGIS.ADF.ComReleaser
releaser.ManageLifetime(CreateFClass)
CreateFClass.out_path = FCLocation
CreateFClass.out_name = FCName
CreateFClass.spatial_reference = pSR
CreateFClass.geometry_type = GeometryType
Result = RunTool(CreateFClass, Nothing, AddLayer)
If Result Is Nothing Then Return Nothing
Return ReturnObjectfromResult(Result, "Feature Class")
End Using
Catch ex As Exception
System.Windows.Forms.MessageBox.Show(ex.ToString & vbNewLine & ex.StackTrace.ToString, "Create Feature Class")
Return Nothing
End Try
End Function
Friend Function RunTool(ByVal Process As ESRI.ArcGIS.Geoprocessor.IGPProcess, ByVal TC As ESRI.ArcGIS.esriSystem.ITrackCancel2, Optional ByVal AddOutput As Boolean = False) As ESRI.ArcGIS.Geoprocessing.IGeoProcessorResult2
Dim Result As ESRI.ArcGIS.Geoprocessing.IGeoProcessorResult2
Try
System.Windows.Forms.Cursor.Current = Windows.Forms.Cursors.WaitCursor
Dim GP As New ESRI.ArcGIS.Geoprocessor.Geoprocessor
GP.AddOutputsToMap = AddOutput
Result = CType(GP.Execute(Process, Nothing), ESRI.ArcGIS.Geoprocessing.IGeoProcessorResult2)
If Result.Status <> ESRI.ArcGIS.esriSystem.esriJobStatus.esriJobSucceeded Then System.Windows.Forms.MessageBox.Show("Geoprocessing Error")
GP.ClearMessages()
Catch ex As Exception
System.Windows.Forms.MessageBox.Show(ex.ToString, "Run Geoprocessor")
End Try
Return Result
End Function
Friend Function ReturnObjectfromResult(ByVal result As ESRI.ArcGIS.Geoprocessing.IGeoProcessorResult2, ByVal Type As String) As Object
Dim GPVal As ESRI.ArcGIS.Geodatabase.IGPValue
Dim InMemFC As String
Dim GPUtil As ESRI.ArcGIS.Geoprocessing.IGPUtilities3 = New ESRI.ArcGIS.Geoprocessing.GPUtilities
Try
GPVal = result.GetOutput(0)
InMemFC = GPVal.GetAsText()
Select Case Type
Case "Feature Class"
Return GPUtil.OpenFeatureClassFromString(InMemFC)
Case "Table"
Return GPUtil.OpenTableFromString(InMemFC)
Case "Feature Layer"
Return GPUtil.OpenFeatureLayerFromString(InMemFC)
Case Else
Return Nothing
End Select
Catch ex As Exception
System.Windows.Forms.MessageBox.Show(ex.ToString, "Return FeatureClass error")
Return Nothing
End Try
End Function