在未来的C#版本中是否有"扩展属性"的计划?
在我看来,他们可能会非常直接地用更多的"编译器魔术"来实现.例如,在扩展方法名称上使用get_和set_前缀会将该方法转换为扩展属性:
public class Foo
{
public string Text { get; set; }
}
public static class FooExtensions
{
public static string get_Name(this Foo foo)
{
return foo.Text;
}
public static void set_Name(this Foo foo, string value)
{
foo.Text = value;
}
}
Run Code Online (Sandbox Code Playgroud)
是否有任何技术限制可以防止这种情况发生?这会在幕后产生太多东西吗?不值得努力的重要性?
考虑一下:
public class interface Person : IPerson
{
int ID { get; protected set; }
string FirstName { get; set; }
string LastName { get; set; }
string FullName { get { return FirstName + " " + LastName; } }
}
Run Code Online (Sandbox Code Playgroud)
还有这个:
public class StubPerson : IPerson
{
int ID { get { return 0; protected set { } }
string FirstName { get { return "Test" } set { } }
string LastName { get { return "User" …Run Code Online (Sandbox Code Playgroud)