很难准确的告诉你的意思;根据特定的场景中,你可以做以下之一:
您可以通过一个结构功能的方法:
public static void fillObject(object [] obs, DataTable dt, Func<object> builder)
{
for (int j = 0; j < dt.Rows.Count; j++)
{
DataRow dr = dt.Rows[j];
if (obs[j] == null)
obs[j] = builder();
fillObject(obs[j], dr);
}
}
或者,如果你知道类型,你可以使用的建筑功能的词典:
Dictionary<Type, Func<object>> sBuilders = new Dictionary<Type, Func<object>>
{
{ typeof(Type1),() => new Type1() },
{ typeof(Type2),() => new Type2() },
// etc...
};
public static void fillObject(object [] obs, DataTable dt, Type pType)
{
for (int j = 0; j < dt.Rows.Count; j++)
{
DataRow dr = dt.Rows[j];
if (obs[j] == null)
obs[j] = sBuilders[pType]();
fillObject(obs[j], dr);
}
}
你怎么知道你需要用什么类型来创建obs [j]? – 2012-07-17 17:48:12
'obs [j] =新羊();'应该做你所描述的。除非你的意思是'obs'本身是空的。在这种情况下,您需要说'obs = new object [100];' – sblom 2012-07-17 17:48:55
粘贴您的错误消息,并突出显示引发异常的代码行。 – 2012-07-17 17:49:52