是否有可能获得明确定义了Serializable属性的所有扩展类类型?
[DataContract]
[KnownType("GetKnownTypes");
public abstract class BaseClass
{
public Type[] GetKnownTypes(){
return all classes which extend this class
AND explicitly have the [Serializable] attribute
}
}
public class DoNotWant : BaseClass {}
[Serializable]
public class Want : BaseClass {}
因此GetKnownTypes将返回类'Want',因为它扩展了BaseClass并且显式具有Serializable属性,而DoNotWant不包含Serializable属性
谢谢
编辑:: 我不相信IsSerializable是准确的依赖,因为它似乎永远是真的(我不确定这是因为BaseClass是否可以序列化)
答案 0 :(得分:4)
未经测试,但类似:
var types = typeof(BaseClass).Assembly.GetTypes().Where(t =>
t.IsClass && t.BaseType == typeof(BaseClass)
&& Attribute.IsDefined(t, typeof(SerializableAttribute))).ToArray();