我有几个成员C#调用泛型方法的类的每个领域
public interface IEquipmentHolder
{
ITypedServiceProvider<IGrabberChannel> VideoChannels { get; }
ITypedServiceProvider<IMicrophone> Microphones { get; }
ITypedServiceProvider<ISpeaker> Speakers { get; }
...
}
和功能
void visitChilds<T>(ITypedServiceProvider<T> childsList) where T : INamedComponent
{
...
}
在一些地方我的代码数据类,我想调用函数数据类的每个字段。所以我这样做:
visitChilds(equipment.VideoChannels);
visitChilds(equipment.Microphones);
...
但是,可能我会在数据类中添加一些新的字段,并不想忘记在这之后修复这些地方。
我的问题:是否有可能使用反射为类的每个数据成员调用泛型函数?如果不是,我们可以把编译时检查新的字段在C#代码中吗?
是的,可以。反射是一种选择。 –
还要考虑到这种问题 - 担心在另一个代码中添加代码时会在一个地方忘记一些代码,并且很好地通过单元测试解决。检查每个属性的反射代码可以作为确保每个属性都包含在内的单元测试的基础。你会写没有反射的实时代码,测试会告诉你,如果你错过了任何。 –