在vs2008中 所有的系统的类的实现都包含在程序集中 如system.dll   system.web.dll  system.data.dll等 
可是我在学写控件的时候 比如public class MailLink:System.Web.UI.WebControls.WebControl{}
我点击WebControl 转到定义 可以查看Webcontrol类的方法和属性事件 
可是这个类只有各个函数的定义  并没有实际的代码如果是封装成程序集就不应该存在这些啊 ?
这些被称为<从元数据> 我也了解一点命名空间什么的 
这些只有定义的类 是从程序集的元素据表里面提取出各类所包含的成员 然后生成这些只包含标签的类的吗?小弟
初学.net问的问题比较笨,表达可能有些不太清楚  希望大牛解答

解决方案 »

  1.   

    元数据(Metadata) 描述了程序集的内容。通过将元数据嵌入每个程序集中,任何程序集都 可以实现完全的自描述,从而简化了发布使用较旧技术的组件时所需进行的工作。 .NET使用元数据省略组件的注册过程。   
    程序集就是包含IL(Intermediate Language)和元数据的集合,即从源代码编译生成的
    人家哪些都是由源代码已经编译成功了,朋友
      

  2.   

    对,这些是元数据没错,是从程序集的自描述信息。但是,这并不等于这些程序集里面只有这些方法的定义。设想一下,假如没有完成方法体,你怎么可能去成功调用?从安全上考虑,如果可以让你看到方法的实现,那不就等于微软全部代码.net代码都开源了吗?微软不会这么傻!其它商业开发的组件、类库,不就全部现形了吗?这是一种策略而已。
      

  3.   

    .net framework 大部分类都是开源的,你可以搜索一下看看如何在vs中查看开源.net代码,那个需要额外地下载组件才能看到。也可以下载一些反编译工具去看,这个使用的人更多。
      

  4.   

    如果有一天.net代码不让反编译了,我发誓我十有八九不会考虑使用微软的.net了。现在的好处就是.net的帮助资源非常多,也比较准确,所以才能使用。
      

  5.   

    MSDN就可以了。。疑惑的先去搜索一圈。
      

  6.   

    微软已经针对大部分.net framework,在好几年前就开源了。希望这在你心目中不是什么新闻。随便搜到了2年多前的一篇文章,大概能够说明了下载源代码的步骤:http://www.cnblogs.com/zhaobl/articles/1543569.html
      

  7.   

    再问一个   问题...
    public sealed class StateBag : IStateManager, IDictionary, ICollection, IEnumerableStateBag类型继承了这么多个接口 可是我没有看到 他有全部实现啊 是没有显示出来吗?
    比如 我定义了一个
    StateBag _viewState;
    ((IStateManager)_viewState).TrackViewState()
    这样调用TrackViewState()方法  TrackViewState方法的代码在哪些呢 
    要反编译才能看到吗?