CodeVariableDeclarationStatement hashTableParam = new CodeVariableDeclarationStatement();
hashTableParam.Name = "hastable";
hashTableParam.Type = new CodeTypeReference(typeof(System.Collections.Hashtable));
我在这里使用hashtable data type
创建了code dom
。
现在我想使用其内置属性,例如add
,clear
等。更清楚我想在代码dom中实现与此类似的代码。
ht.add("key","value");
我试着这样做
CodeVariableDeclarationStatement hashTableParam = new CodeVariableDeclarationStatement();
hashTableParam.Name = "hastable";
hashTableParam.Type = new CodeTypeReference(typeof(System.Collections.Hashtable));
CodeMethodInvokeExpression invokeExp2 = new CodeMethodInvokeExpression(new CodeVariableReferenceExpression(hashTableParam.Name), "add");
invokeExp2.Parameters.Add(new CodeArgumentReferenceExpression("key"));
invokeExp2.Parameters.Add(new CodeArgumentReferenceExpression("value"));
// CodeStatementCollection statements = new CodeStatementCollection();
return hashTableParam;
但我无法在invokeExp2
和hashtableparam
之间建立链接。
在构建属性中是否有任何其他解决方案可用于我正在尝试使用它具有用户定义
答案 0 :(得分:0)
您在那里获得的代码看起来像是在尝试传递传递给您正在构建的方法的键和值参数的值add方法哈希表:
void GeneratedMethod( string key, string value )
{
...
hashtable.add( key, value );
}
如果你试图传递实际的单词“key”和“value”,它看起来更像是这样:
invokeExp2.Parameters.Add( new CodePrimitiveExpression( "key" ) );
invokeExp2.Parameters.Add( new CodePrimitiveExpression( "value" ) );
您还设置了将hashTableParam变量本身视为一种方法。相反,您需要使用CodeMethodReferenceExpression。
invokeExp2 =
new CodeMethodInvokeExpression(
new CodeMethodReferenceExpression(
new CodeVariableReferenceExpression( hashTableParam.Name ),
"add" )
)