标签:
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); } } }
标签:
原文地址:http://www.cnblogs.com/xcl461330197/p/4983816.html