【发布时间】:2013-05-01 13:35:44
【问题描述】:
我创建了小型便携式库(reference,目标:Windows、Windows 8、Windows Phone 7.5) 用于教育目的。我决定在我的小型 Windows 8 Metro 风格应用程序中使用它。不幸的是,当我从库中调用方法时,抛出异常:
应用程序调用了一个为不同线程编组的接口。
在以下行:
return Activator.CreateInstance(outputType, constructorArguments.ToArray());
(Resolve method) outputType 是 typeof(ClassFromMyMetroStyleApp)。 库作为 dll 引用添加到项目中。
我可以做些什么来解决这个问题?
编辑: 方法是从 Metro Style App 解决方案中的 UnitTest 调用:
[TestClass]
public class ResolvingTypesTests
{
/// <summary>
/// The school context interface test.
/// </summary>
[TestMethod]
public void SchoolContextTest()
{
var schoolContext = TypeService.Services.Resolve<ISchoolContext>();
Assert.AreEqual(typeof(SchoolCollection), schoolContext.GetType());
}
}
其中TypeService是静态类,Services是IResolvable类型的静态属性(接口由Library提供)。
服务属性:
/// <summary>
/// The resolvable.
/// </summary>
private static IResolvable resolvable;
/// <summary>
/// Gets the type services.
/// </summary>
public static IResolvable Services
{
get
{
if (resolvable == null)
{
var builder = new ContainerBuilder();
builder.Register();
resolvable = builder.Build();
}
return resolvable;
}
}
【问题讨论】:
-
ClassFromMyMetroStyleApp是 UI 类吗?constructorArguments是什么? -
这是一个 COM 编组错误,在商店应用中大量使用。原因尚不清楚,但您需要告诉测试运行程序初始化正确运行测试的线程的可能性很高。这是一个讨论相同问题的sample question。
-
哇,谢谢!我去看看。
标签: c# .net reflection