Как насчет воссоздания вашего собственного перечисления из другого и добавления соответствующих атрибутов к первому при необходимости. Я знаю, что это не решение во время выполнения, но оно достаточно простое и может быть сделано за пару минут.
С учетом следующего перечисления третьей стороны:
enum ThirPartyEnum
{
Zero = 0,
One = 1,
Two = 2
}
Создайте свой собственный способ таким образом:
[DataContract(Name = "MyEnum")]
enum MyEnum
{
[Description("Zero")]
[EnumMember]
Zero= ThirPartyEnum.Zero,
[Description("One")]
[EnumMember]
One = ThirPartyEnum.One,
[Description("Two")]
[EnumMember]
Two = ThirPartyEnum.Two
}