private static List<BoundType> GetDerivedBoundTypes(IEnumerable<BoundType> boundTypes)
{
var derivedBoundTypes = new List<BoundType>();
foreach (var bt in boundTypes)
{
var baseTypes = bt.Type.GetInterfaces().Where(t => t != typeof(IInterfacedActor));
foreach (var type in new[] { bt.Type }.Concat(baseTypes))
{
derivedBoundTypes.Add(new BoundType
{
Type = type,
IsTagOverridable = type.GetCustomAttribute<TagOverridableAttribute>() != null,
TagValue = bt.TagValue
});
}
}
return derivedBoundTypes;
}