如何创建自己的System命名空间和对象?

时间:2010-09-30 06:46:21

标签: c#

据说这里 http://msdn.microsoft.com/en-us/library/fa13yay7%28v=VS.90%29.aspx(另见http://msdn.microsoft.com/en-us/library/s4wcexbc%28VS.90%29.aspx

  

如果要定义,请使用此选项   或创建自己的系统命名空间   和对象。

但是怎么样?我在哪里可以找到一些例子?

更新:当然我的问题不是关于如何创建命名空间或类,而是关于自定义系统架构(UML架构和源代码)的示例。

例如,这可以用于在其他处理器(如iphone)上移植.NET吗? Mono会使用它吗?

是否有一些最小的可能的例子而不是整个商业clr来学习?

2 个答案:

答案 0 :(得分:7)

如何?只需编写代码即可。创建一个名为System的名称空间,其中包含一个名为Object的类和一个名为String的类,编译器将选择它并使用它而不是框架类库版本。 框架团队就是这样做的。你所要做的就是自己复制所有的工作,你也可以在提供业务的框架类库中。

请注意,在许多情况下,编译器被设计为期望System命名空间中的类型完全,因为它们被记录为。我过去曾经有过bug报告 - 非常混乱的错误报告! - 有人重新定义了System.Collections.Generic.IEnumerator<T> 不同的属性和方法,而不是“真正的”属性和方法,然后他们都惊讶并担心编译器会生成疯狂的代码一个“foreach”循环。如果重新定义基本接口是你想要做的事情,那么考虑编写自己的C#编译器。在这种情况下,我们的设计并不健全。

答案 1 :(得分:4)

我不知道您为什么要这样做,但您只需要创建一个自定义的“系统”程序集(如标准库),并将其用作/nostdlib+设置的其他项目中的参考。

namespace System 
{
  public sealed class String : IComparable, ICloneable, IConvertible, IComparable<string>, IEnumerable<char>, IEnumerable, IEquatable<string>
  {
     ...
  }
}