2017-04-27 85 views
1

要的CodeDOM創建支持字段屬性,我們可以使用一個建築像這樣:C#CodeDOM的新屬性,它返回一個字典元素

CodeMemberProperty property = new CodeMemberProperty; 
      property.GetStatements.Add(
       new CodeMethodReturnStatement(
        new CodeFieldReferenceExpression(
         new CodeThisReferenceExpression(), 
                 fieldName))); 

但必須是什麼建築內部「CodeMethodReturnStatement」像一個結果:

public string SomeProp { get { return _someDict[_someKey]; } } 

其中:

_someDict = new Dictionary<string, string>(); 
_someKey = "someKey"; 

_someDict和_someKey是SA成員我生成類。

+0

我認爲你需要CodeIndexerExpression類。 – john

+0

您不應編輯您的問題以包含答案。相反,你應該把它作爲答案發布,然後你可以接受它。 – svick

回答

0

感謝評論我要解決這樣的問題:

CodeIndexerExpression indexerExpression = 
      new CodeIndexerExpression(
       new CodeFieldReferenceExpression(
        new CodeTypeReferenceExpression(typeof(Class1)), 
        "dict"), 
       new CodeFieldReferenceExpression(
        new CodeTypeReferenceExpression(typeof(Class1)), 
        "key")); 

請注意,我的重點領域和字典場都是靜態的,但對於局部變量的想法是一樣的。 只需使用CodeThisReferenceExpression代替CodeTypeReferenceExpression即可。

public static string Prop 
    { 
     get 
     { 
      return Class1.dict[Class1.key]; 
     } 
    } 
相關問題