扩展方法

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using OtherNamespce;
 
 
namespace CurrentNamespace
{     class Program     {         static void Main(string[] args)         {             Person p = new Person { Name = "xcl" };             p.Print();//错误	1	在以下方法或属性之间的调用不明确:             Console.Read();         }     }     //自定义类型     public class Person     {         public string Name { get; set; }     }     //当前命名空间下扩展方法的定义     public static class Extensionclass1   //扩展方法必须在一个非嵌套,非泛型 的静态类中定义     {                                     //至少有一个参数;//第一个参数必须加上this关键字,第一个参数类型也称为扩展类型,就是方法对这个类型进行扩展,         //第一个参数不能使用任何修饰符,如 :ref,out等修饰符         //第一个参数不能是指针类型         //扩展方法必须是静态的         //public static void Print(this Person per)         //{         //    Console.WriteLine("调用的是当前命名空间下的扩展方法输出,姓名为:{0}", per.Name);         //}     }     //又一个当期命名空间下的扩展方法定义     //public static class Extensionclass2     //{     //    //同一个命名空间下,定义了相同的Print扩展方法     //    public static void Print(this Person per)     //    {     //        Console.WriteLine("调用的是当期命名下的扩展方法输出,姓名为:{0}", per.Name);     //    }     //}
}
 
//怎么解决这个问题 ?
//1. 同一个命名空间下,相同的扩展名方法名字改成为不同的;
//2. 把相同的方法名字改到不同的命名空间;
namespace OtherNamespce
{     using CurrentNamespace;     public static class Extensionclass2     {         //同一个命名空间下,定义了两个相同的Print扩展方法         public static void Print(this Person per)         {             Console.WriteLine("调用的是 OtherNamespce 命名下的扩展方法输出,姓名为:{0}", per.Name);         }     }
}
posted @ 2015-11-21 15:29  t800  阅读(184)  评论(0编辑  收藏  举报