In fact, I was using the .get_Parameter(InternalDefinition) overload when I noticed this with Assembly Code, then tested with .get_Parameter(BIP) which is the same and finally, as perhaps .get_Parameter may not officially be supported (doesn't show up in the api help) - Element.GetParameter which was no better.
btw -the list of parameters common to both element and elementtype - shown above - makes use of the .get_Parameter(BIP) method (iterating through all BIP enums).
something like this:
var map = Enum.GetValues(typeof(BuiltInParameter)).OfType<BuiltInParameter>().GroupBy(p => p).Select(g => g.First())
.Where(p => wall.get_Parameter(p) != null && wall.WallType.get_Parameter(p) != null)
.Select(p => new { parameter = p, label = LabelUtils.GetLabelFor(p), instance = wall.get_Parameter(p).GetRawValue(), type = wall.WallType.get_Parameter(p).GetRawValue() })
.ToList();
where .GetRawValue() is an extension that just returns an object based on the parametertype
I tried this on several categories - Assembly Code and Description are (at least in those I looked at) always there for both elements and elementtypes.
Thanks for looking at this - Peter