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); } }
}