注册 登录
编程论坛 C# 论坛

编写一个静态类MyExtensions,扩展.NET Framework基本类型的功能发现错误 2 “int”不包含“DisplayDefiningAssemb

the_second 发布于 2016-04-17 09:46, 4338 次点击
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Practice_MyExtensions
{
    class Program
    {
        static class MyExtensions
        {


            //本方法允许任何对象显示它所处的程序集   
            public static void DisplayDefiningAssembly(this object obj)
            {
                Console.WriteLine("{0} lives here : =>> {1} \n", obj.GetType().Name, Assembly.GetAssembly(obj.GetType()).GetName().Name);
            }


            //本方法允许任何整型返回倒置的副本,如56将返回65;   
            public static int ReverseDigits(this int i)
            {
                //把int 翻译为string 然后获取所有字符   
                char[] digits = i.ToString().ToCharArray();

                //反转数组中的项   
                Array.Reverse(digits);

                //放回string   
                string newDigits = new string(digits);

                //最后以int返回修改后的字符串   
                return int.Parse(newDigits);
            }
        }   

        static void Main(string[] args)
        {
            int i = 0;
            i.DisplayDefiningAssembly();   
            System.Data.DataSet ds = new System.Data.DataSet();   
            ds.DisplayDefiningAssembly();   
            Console.ReadKey();   
        }
    }
}

错误    1    当前上下文中不存在名称“Assembly”    D:\VS2012\C#\project\Sample\Practice_MyExtensions\Practice_MyExtensions\Program.cs    18    86    Practice_MyExtensions

错误    2    “int”不包含“DisplayDefiningAssembly”的定义,并且找不到可接受类型为“int”的第一个参数的扩展方法“DisplayDefiningAssembly”(是否缺少 using 指令或程序集引用?)    D:\VS2012\C#\project\Sample\Practice_MyExtensions\Practice_MyExtensions\Program.cs    42    15    Practice_MyExtensions

错误    3    “System.Data.DataSet”不包含“DisplayDefiningAssembly”的定义,并且找不到可接受类型为“System.Data.DataSet”的第一个参数的扩展方法“DisplayDefiningAssembly”(是否缺少 using 指令或程序集引用?)    D:\VS2012\C#\project\Sample\Practice_MyExtensions\Practice_MyExtensions\Program.cs    44    16    Practice_MyExtensions
7 回复
#2
the_second2016-04-17 09:47
求帮助,谢谢大家
#3
the_second2016-04-17 09:47
这是我在网上找的关于拓展方法的程序,但是运行不了
#4
the_second2016-04-17 09:48
是我那个命名空间没包含吗
#5
a6464049082016-04-17 11:16
static void Main(string[] args)
        {
            int i = 0;
            DisplayDefiningAssembly(i);   
            System.Data.DataSet ds = new System.Data.DataSet();   
            DisplayDefiningAssembly(da);   
            Console.ReadKey();   
        }
#6
a6464049082016-04-17 11:18
int i = 0;
            i.DisplayDefiningAssembly();    你用i. 你是觉得 int 里面是有DisplayDefiningAssembly这个方法?  还是你想重写int?
#7
the_second2016-04-17 12:45
回复 6楼 a646404908
你好,这个是网上的程序
http://
我运行了一下你改的程序好像还是不行
错误    1    当前上下文中不存在名称“Assembly”    D:\VS2012\C#\project\Sample\Practice_MyExtensions\Practice_MyExtensions\Program.cs    18    86    Practice_MyExtensions
错误    2    当前上下文中不存在名称“DisplayDefiningAssembly”    D:\VS2012\C#\project\Sample\Practice_MyExtensions\Practice_MyExtensions\Program.cs    42    13    Practice_MyExtensions
错误    3    当前上下文中不存在名称“DisplayDefiningAssembly”    D:\VS2012\C#\project\Sample\Practice_MyExtensions\Practice_MyExtensions\Program.cs    44    13    Practice_MyExtensions
#8
a6464049082016-04-17 16:02
首先 创建控制台项目 .net版本3.5的或以上
  添加 这行代码  using System.Reflection;
1