Roslyn C#从另一个类中获取符号定义

时间:2017-08-25 10:17:56

标签: c# roslyn

我的文档中有以下调用:

package pojos;

import com.google.auto.value.AutoValue;

import java.util.List;
import java.util.Map;

@AutoValue
public abstract class KeyValuesMapHolder {

    public abstract List<KeyValue<String,String>> keyValues();
    public abstract Map<Integer,String> mapping();

    public static KeyValuesMapHolder create(List<KeyValue<String, String>> keyValues, Map<Integer, String> mapping) {
        return new AutoValue_KeyValuesMapHolder(keyValues, mapping);
    }

}

使用Roslyn我已成功找到第一个参数

var myContext = new FeatureWorkflowContext(FeatureWorkflowIds.CanvasConfig, activator);

现在我想将它在FeatureWorkflowIds.cs类中定义的实际值

FeatureWorkflowIds.CanvasConfig

我的目标是简单地找到&#34; Feature.WorkflowName.CanvasConfig&#34; 字符串。

是否有一种简单的方法可以完成此操作,或者我必须打开FeatureWorkflowIds类并搜索语法树?

1 个答案:

答案 0 :(得分:0)

如果字段是这样的const:

public const string CanvasConfig = "Feature.WorkflowName.CanvasConfig";

使用SemanticModel并获得常量值会很容易。

但是,由于它不是const,只是静态只读,除了调查源声明之外,你确实没有其他选择。