2009-04-10 3 views
0
CodeVariableDeclarationStatement hashTableParam = new CodeVariableDeclarationStatement(); 
hashTableParam.Name = "hastable"; 
hashTableParam.Type = new CodeTypeReference(typeof(System.Collections.Hashtable)); 

Здесь я создал hashtable data type, используя code dom.в коде 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

код у вас есть выглядит, как вы пытаетесь передать значения ключа и значение аргументы, передаваемые методу вы строите добавить метод в Hashtable:

void GeneratedMethod(string key, string value) 
{ 
    ... 
    hashtable.add(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")   
) 
+0

Мне понравилось, но я хочу, чтобы он был как ht.add ("", ""); встроенное свойство типа данных хеш-таблицы – Arunachalam

Смежные вопросы