8 Years later i got pretty much the same question. And since nobody answered since 2012 I am wondering if there is a solution for this problem meanwhile?
I created some project parameters using a shared parameter file.So it looks like this:

Now I want some enumerated values for some of my attributes. e.g. I want a dropdown menu for attribute "gebäudeklasse" with the possible values , "gebäudeklasse 2" and "gebäudeklasse 3".
My code to create the parameters so far:
Category projCategory = doc.Settings.Categories.get_Item(BuiltInCategory.OST_ProjectInformation);
CategorySet projCategorySet = app.Create.NewCategorySet();
projCategorySet.Insert(projCategory);
string paramFile = @"D:\Daten\SharedParameterFile.txt";
var parameter = new XPlan_Parameter();
DefinitionFile defFile = default(DefinitionFile);
List<string> projectInformationList = new List<string>();
projectInformationList.Add("Bezeichnung des Bauvorhabens");
projectInformationList.Add("Art der Maßnahme");
projectInformationList.Add("Art des Gebäudes");
projectInformationList.Add("Gebäudeklasse");
projectInformationList.Add("Bauweise");
foreach (var p in projectInformationList)
{
defFile = parameter.CreateDefinitionFile(paramFile, app, doc, p, "ProjectInformation");
}
foreach (DefinitionGroup dg in defFile.Groups)
{
foreach (var projInfoName in projectInformationList)
{
if (dg.Name == "ProjectInformation")
{
ExternalDefinition externalDefinition = dg.Definitions.get_Item(projInfoName) as ExternalDefinition;
Transaction tProjectInfo = new Transaction(doc, "Insert Project Information");
{
tProjectInfo.Start();
ProjectInfo projectInfo = doc.ProjectInformation;
InstanceBinding newIB = app.Create.NewInstanceBinding(projCategorySet);
if (externalDefinition != null)
{ doc.ParameterBindings.Insert(externalDefinition, newIB, BuiltInParameterGroup.PG_GENERAL);
}
}
tProjectInfo.Commit();
}
}
}