首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >为什么类类型不是密封的,我能用它做什么?

为什么类类型不是密封的,我能用它做什么?
EN

Stack Overflow用户
提问于 2012-02-21 03:27:37
回答 2查看 359关注 0票数 18

我正在查看Type的元数据,并注意到一个成员是受保护的,这让我想知道可能会从它派生什么,这让我意识到我可以编写一个从它派生的类,所有这些都让我想知道我能用它做什么(如果有的话)。

以下代码中没有编译器错误:

代码语言:javascript
复制
class MyType : Type
{
    // Implemented abstract members here.
}
EN

回答 2

Stack Overflow用户

发布于 2012-02-21 03:32:28

是的,不要继承;p有像RuntimeType这样的东西-- Type是你通常应该使用的抽象。如果你想在运行时动态地表示一个类型,有两个主要的选择;

4.0中的

  • dynamic (通过实现IDynamicMetaObjectProvider)
  • before that,TypeDescriptor (通过实现ICustomTypeDescriptor或提供TypeDescriptionProvider,可能还包括TypeConverter)

如果您想进行元编程(在运行时创建实际的新类型,而不是欺骗它),也可以使用TypeBuilder

票数 7
EN

Stack Overflow用户

发布于 2012-02-21 03:34:01

Type之所以被解封,是因为它实际上被设计为由运行时继承。在BCL中有很多这样的例子。

  • EnumBuilder
  • RuntimeType
  • TypeBuilder

其中最有趣的是RuntimeType,这是一个正在运行的系统中的大多数Type实例是如何实现的。大多数对o.GetType()的调用实际上都会返回一个RuntimeType实例。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9367188

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档