3
是否有可能获得所有在其中明确定义了Serializable属性的扩展类类型?使用反射来获取所有带有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将返回类“希望”,因为它扩展BaseClass的,并明确了Serializable接口,同时DoNotWant属性不包含属性序列化的明确
谢谢
编辑:: 我不相信IsSerializable是准确依赖的,因为它似乎总是如此(我不确定这是因为BaseClass是否可序列化)
该场景令人困惑,因为WCF/DataContract不关心** [Serializable],所以我们不希望看到它。此外,编译器细节[Serializable]映射到支持IsSerializable的相同CLI标志(它实际上并未实现为属性...否:我的意思是) - 但是,它可能因继承而异。但是,如果所有类型都在同一个程序集中,那么它应该很容易。 – 2012-02-14 17:30:10