更新:抱歉,我错了,返回了StringBar。让我们看看我是否可以解决如何删除这个问题。
想象一下以下课程:
public class Foo
{
public int Bar { get; set; }
public string StringBar
{
get { return Bar.ToString(); }
}
public void DoSomething()
{
}
}
如果我写:typeof(Foo).GetProperties()
,则不会返回StringBar属性信息,我认为是因为C#将其视为方法,而不是属性。
从程序员的角度来看,存在一个区别:一个方法通常会导致一些状态改变,而一个属性则不会。
获取Bar和StringBar属性的最佳方法是什么,而不是DoSomething方法(显然没有明确指出它们的名称)?
答案 0 :(得分:2)
我对您声称不会返回StringBar提出异议。这是一个非常普通的财产。
我不认为你的真实代码是非公开的,是吗?
反示例代码 - 在您展示时,Foo
完全:
using System;
class Test
{
static void Main()
{
foreach (var prop in typeof(Foo).GetProperties())
{
Console.WriteLine(prop.Name);
}
}
}
结果:
Bar
StringBar
答案 1 :(得分:0)
这为我打印StringBar
和Bar
。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
foreach (var item in typeof(Foo).GetProperties())
Console.WriteLine(item.Name);
Console.ReadKey();
}
public class Foo
{
public int Bar { get; set; }
public string StringBar
{
get { return Bar.ToString(); }
}
public void DoSomething()
{
}
}
}
}
答案 2 :(得分:0)
当然会返回StringBar属性!我完全相信!它仍然是一个属性,只有get动作(只读)。