I am using vb.NET, but this should be easy enough to convert over to C#. I am not sure if this is the best or most efficient way to do this, but it seems to work.
Using tr As Transaction = db.TransactionManager.StartTransaction
'Open Main Alignment for Read
Dim align As Alignment = tr.GetObject(res.ObjectId, OpenMode.ForRead)
'Build List of Alignment Arcs
For Each alignEnt As AlignmentEntity In align.Entities
Dim subEntCount As Integer = alignEnt.SubEntityCount
For i As Integer = 0 To subEntCount - 1
Dim alignSubEnt As AlignmentSubEntity = alignEnt(i)
If alignSubEnt.SubEntityType = AlignmentSubEntityType.Arc Then
alignmentSubEntityArcList.Add(alignSubEnt)
End If
Next
Next
'Convert List of Arcs to Array
Dim arcs() As AlignmentSubEntityArc = alignmentSubEntityArcList.ToArray
'Create Left and Right Offset Alignments
Dim offsetAlignRightId As ObjectId = Alignment.CreateOffsetAlignment(db, "MyOffsetAlignmentRight", align.Name, 30, "Standard")
Dim offsetAlignLeftId As ObjectId = Alignment.CreateOffsetAlignment(db, "MyOffsetAlignmentLeft", align.Name, -30, "Standard")
'Get Left and Right Offset Alignments
Dim offsetAlignRight As Alignment = offsetAlignRightId.GetObject(OpenMode.ForWrite)
Dim offsetAlignLeft As Alignment = offsetAlignLeftId.GetObject(OpenMode.ForWrite)
'Get Left andd Right Offset Info
Dim offsetInfoRight As OffsetAlignmentInfo = offsetAlignRight.OffsetAlignmentInfo
Dim offsetInfoLeft As OffsetAlignmentInfo = offsetAlignLeft.OffsetAlignmentInfo
'Create AutoWidening Info
Dim widenInfo As New AutoWideningInfo With {.IncreasedWidth = 50, .Side = Autodesk.Civil.WideningSide.Both, .TransitionLength = 100}
'Add the Left and Right AutoWidening Info
offsetInfoRight.AddAutoWidenings(widenInfo, arcs)
offsetInfoLeft.AddAutoWidenings(widenInfo, arcs)
'Commit Transaction
tr.Commit()
End Using