【发布时间】:2017-06-07 08:39:09
【问题描述】:
我正在寻找一种解决方案来在方法中创建所有对象。我想出了以下解决方案来获取所有创作的列表:
var creations = MethodDeclaration.Body.DescendantNodes().OfType<ObjectCreationExpressionSyntax>();
但现在我正在寻找标识符名称(变量名称)。在调试时我发现,这个变量有这个信息——但是标识符属性是不可访问的。
creations.First().Parent.Parent.Identifier.ValueText;
如果有人能解决我的问题,我会非常高兴。
编辑
我正在尝试分析单元测试。例如:
[TestMethod]
public void WarningOverReferencedTest()
{
var myVar = new MyObject();
var myVar1 = new MyObject1();
var myVar2 = new MyObject2();
var myVar3 = new MyObject();
var myVar4 = new MyObject3();
Assert.AreEqual(true, myVar.someProperty);
Assert.AreEqual(true, myVar3.someProperty2);
Assert.AreEqual(true, myVar1.someProperty);
Assert.AreEqual(true, myVar2.someProperty);
}
我想计算Assert.AreEqual 检查中使用的引用。所以上面的例子应该返回 3,因为 myVar 和 myVar3 来自同一类型,myVar4 没有在 Assert.AreEqual 检查中使用。
【问题讨论】:
-
我更新了我的答案,马塞尔。
-
到目前为止非常感谢。我如何从上面编辑的示例中计算这些引用?
-
在我的回答中。您只需致电
types.Count即可获得计数。 -
是的,我知道,但这不是 100% 正确的,因为我只有在断言中使用的那些类型。我现在会得到 4,但应该是 3。
-
那么看
Assert方法调用,从参数列表中收集ITypeSymbol-s,交叉引用两组。