【发布时间】:2016-03-30 22:00:17
【问题描述】:
我有一个这样的字符串:
"MyProduct.Framework.Business.ShopBusiness"
但它自己的程序集名称只是:
"MyProduct.Framework.Business"
我需要创建一个这样的字符串:
"MyProduct.Framework.Business.ShopBusiness, MyProduct.Framework.Business"
因为我正在尝试解决这个问题: https://stackoverflow.com/a/3512351/375422
所以基本上我有这个:
Type executingClass = Type.GetType(TestContext.FullyQualifiedTestClassName);
我需要这样的东西:
Type executingClass = Type.GetType(TestContext.FullyQualifiedTestClassName + ", " + Assembly.FromString(TestContext.FullyQualifiedTestClassName));
有没有我在上面发明的“Assembly.FromString()”的内置方法?
换句话说:如何从 TestContext 获取正在执行的测试的程序集名称?
【问题讨论】:
-
我只有这个:TestContext.FullyQualifiedTestClassName
-
这听起来像XY problem。你的实际目标是什么?
-
我的目标是提取没有类的程序集名称。所以从这个字符串:“MyProduct.Framework.Business.ShopBusiness”,我想要:“MyProduct.Framework.Business”。有没有内置方法?
-
如果类型的命名空间与程序集名称不同会怎样?它不会工作!
-
您无法以直接的方式获得它。类型的全名不足以确定它在哪个程序集中,因为名称空间和程序集是正交的。 TestContext 类也不包含有关正在运行的测试程序集的必要信息。一种方法是扫描程序集列表以查找具有相同全名的类型。您可以从当前 appdomain 中获取已加载程序集的列表,也可以在程序集初始化方法中注册每个测试程序集并搜索它们。
标签: c# .net reflection .net-assembly