我尝试理解类似于此代码的扩展方法
var p = new Person("Tim");
p.LastName = "Meier";
// reader.Get<bool>("IsDerivat");
var IsOlivia = p.Get<bool>("Olivia");
这是我在RoslynPad中的代码:
public static class PersonExtensions
{
public static T Get<T>(this Person person, string name)
{
return (T)person.NewFirstName(name);
}
}
public class Person
{
public Person(string firstName)
{
this.FirstName = firstName;
}
public string FirstName {get; private set;}
public string LastName {get; set;}
public object NewFirstName(string name)
{
this.FirstName = name;
return (object) this.FirstName;
}
}
但我得到这个错误
错误 CS1109:扩展方法必须定义在顶级静态类中;PersonExtensions 是一个嵌套类
我发现这个问题extension-methods-must-be-defined-in-a-top-level-static-class-并且答案很好。
添加namespace Foo
退货
错误 CS7021:无法在脚本代码中声明命名空间
roslynpad 似乎在幕后添加了一些东西。那么如何确保我的扩展方法是在顶级静态类中定义的呢?