AeccPipeNetworkPart::SwapPartFamilyAndSize() is a Civil 3D COM API which swaps the part family. It doesn't have a .NET version yet (2013 release of Civil 3D). If you are trying to avoid any COM references and opting a late binding approach and not sure about how to prepare the input argument for the SwapPartFamilyAndSize, here is a relevant code snippet :
using (Transaction ts = Application.DocumentManager.MdiActiveDocument.Database.TransactionManager.StartTransaction())
{
Part part = (Part)ts.GetObject(res.ObjectId, OpenMode.ForRead);
object acadpart = part.AcadObject;
object partfam = acadpart.GetType().InvokeMember("PartFamily", System.Reflection.BindingFlags.GetProperty, null, acadpart, new object[0]);
ObjectId prtfamId = Autodesk.AutoCAD.DatabaseServices.DBObject.FromAcadObject(partfam);
PartFamily partfamily = (PartFamily)ts.GetObject(prtfamId, OpenMode.ForRead);
object[] dataArry = new object[2];
dataArry[0] = partfamily.GUID;
ObjectId partSizeId = partfamily[0];
PartSize partSize = ts.GetObject(partSizeId, OpenMode.ForRead) as PartSize;
dataArry[1] = partSize.AcadObject;
acadpart.GetType().InvokeMember("SwapPartFamilyAndSize", System.Reflection.BindingFlags.InvokeMethod, null, acadpart, dataArry);
ts.Commit();
}