我有以下设置:
public interface IInput
{
}
public class SomeInput : IInput
{
public int Id { get; set; }
public string Requester { get; set; }
}
现在我想编写一个函数,可以使用任何实现IInput的函数并使用反射来为我提供属性:
public Display(IInput input)
{
foreach (var property in input.GetType().GetProperties())
{
Console.WriteLine($" {property.Name}: {property.GetValue(input)}");
}
}
其中
var test = new SomeInput(){Id=1,Requester="test"};
Display(test);
显示
Id: 1
Requester: test
答案 0 :(得分:1)
如果您使用typeof()
,则会获得变量的类型。但是如果使用GetType()
,您将获得实际的运行时类型,从中可以反映所有已实现的属性。
void DumpProperties(IInput o)
{
var t = o.GetType();
var props = t.GetProperties(BindingFlags.Instance | BindingFlags.Public);
foreach (var prop in props)
{
Console.WriteLine(String.Format("Name: {0} Value: {1}",
prop.Name,
prop.GetValue(o).ToString()
);
}
}