【发布时间】:2015-12-17 22:09:28
【问题描述】:
在this page 上,建议使用以下代码查找派生自给定类型的类,但此代码不起作用,因为以下行
var symbol = _model.GetDeclaredSymbol(node);
返回 ISymbol,而不是预期的 INamedTypeSymbol。
在this page 上的常见问题解答中,为了获取变量声明的类型,建议使用以下代码。但是,这也会在运行时引发异常,表示强制转换为 ILocalSymbol 无效。
var type = ((ILocalSymbol)model.GetDeclaredSymbol(variableDeclarator)).Type;
我尝试查看 Roslyn 源代码以找出一种方法并尝试了它们,但到目前为止没有成功。
我想做的是,检测解决方案中派生自 EntityFramework 的 DbContext 类的所有类。有人可以建议我找到这个的方法吗?提前致谢!
【问题讨论】:
-
你在哪个节点上操作?
GetDeclaredSymbol返回什么? -
感谢您的回答,我意识到问题所在。发送到 GetDeclaredSymbol 方法的节点参数未正确动态分派。这就是为什么它调用 GetDeclaredSymbol 的错误重载。所以我删除了这个问题。