【发布时间】:2010-07-30 13:46:08
【问题描述】:
这是一个理论问题,我已经找到了解决问题的方法,让我走上了一条不同的道路,但我认为这个问题仍然可能很有趣。
我可以像使用方法一样将对象属性作为委托传递吗?例如:
假设我有一个加载了数据的数据读取器,并且每个字段的值都需要传递到已检查 DBNull 的不同类型的属性中。如果尝试获取单个字段,我可能会写如下内容:
if(!rdr["field1"].Equals(DBNull.Value)) myClass.Property1 = rdr["field1"];
但如果我有 100 个字段,那很快就会变得笨拙。执行此操作的调用有多种方式看起来不错:
myClass.Property = GetDefaultOrValue<string>(rdr["field1"]); //Which incidentally is the route I took
作为扩展方法看起来也不错:
myClass.Property = rdr["field1"].GetDefaultOrValue<string>();
或者:
SetPropertyFromDbValue<string>(myClass.Property1, rdr["field1"]); //Which is the one that I'm interested in on this theoretical level
在第二种情况下,需要将属性作为委托传递才能设置它。
所以问题分为两部分:
- 这可能吗?
- 那会是什么样子?
[由于这只是理论上的,我同样可以接受 VB 或 C# 中的答案]
编辑:这里有一些巧妙的答案。谢谢大家。
【问题讨论】:
标签: c# .net vb.net c#-3.0 c#-4.0