【发布时间】:2017-06-21 13:15:44
【问题描述】:
我有一个Dictionary<string,string> dictionary,其中的键包含属性的名称,值对应的值。然后我有许多不同的模型和一个处理这些不同模型的通用类。我正在尝试通过模式匹配来设置相关属性的值(除非有更好的方法?)。
var record = new T();
foreach (var property in ReflectiveOps.Properties(record))
{
if (dictionary.ContainsKey(property.Name))
{
switch ...???
我尝试切换property.PropertyType,然后切换case int 和case int i,但没有奏效。我可以做一个if(property.PropertyType.Name == "int"{...} - 那行得通。这可以通过开关完成吗?
【问题讨论】:
-
property.PropertyType == typeof(int)会更好 -
@PatrickHofman:是的,但这似乎也只适用于
if..then语句。如果我将它放入案例中,我会收到一个错误,即预期值为常量。 -
@PatrickHofman 但一个很好的建议...(错误捕获 atm,并看到名称“int32”恰好与“int”不同,但与您的
typeof相同:-)
标签: c# generics properties switch-statement