相关疑难解决方法(0)

操作可能会破坏运行时的稳定性?

我在理解这里的问题时遇到了一些麻烦.我有一些代码使用LINQ从数据库中提取记录,并将它们放入一个被转换为接口的对象中.看起来有点像这样:

public IEnumerable<ISomeObject> query()
{
    return from a in dc.SomeTable
           select new SomeObject
           {
             //Assign various members here
           } as ISomeObject;
}
Run Code Online (Sandbox Code Playgroud)

当我测试它时,我将返回的IEnumerable放入一个名为results的变量中并运行以下行:

Assert.AreEqual(EXPECTED_COUNT, results.Count());
Run Code Online (Sandbox Code Playgroud)

运行它时,我得到一个System.Security.VerificationException:"操作可能会破坏运行时的稳定性."

我在这里找到了解决方案,这是:

var results = from a in dc.SomeTable
              select new SomeObject
              {
                //Assign various members here
              } as ISomeTable;
return results.OfType<ISomeObject>();
Run Code Online (Sandbox Code Playgroud)

这有效,但我无法理解这里发生的事情.为什么我首先得到异常,上面的代码行是如何解决的?MSDN文档似乎表明这是类型安全的问题,但我没有看到以前的代码类型不安全的地方.

更新 我发现的更多信息.如果我返回类型IQueryable,第一个示例有效.这揭示了一点点光什么是走错了,但我仍然感到困惑的原因.为什么编译器不强迫我将IEnumerable转换为IQueryable?

.net c# linq .net-3.5 linq-to-sql

37
推荐指数
3
解决办法
4万
查看次数

Json.NET + VerificationException操作可能会破坏运行时的稳定性

我得到"操作可能会破坏运行时异常".我瞪大了一下,看起来异常与在运行时加载的冲突程序集有关.所以,这里有几件事

  1. 相同的源代码在我的同事机器上工作.
  2. 我查看并搜索了对NewtonSoft.Json.dll的每个引用,看起来它来自同一个程序集.(我认为这不会是一个问题,因为它在其他人机器上工作).
  3. 我正在使用Raven,它引用了NewtonSoft,但它不仅仅在客户端/ silverlight端在服务器端使用.同样兼容我引用了raven引用的相同版本的Newtonsoft.

现在,问题可能是我在影响这个的机器上安装的东西.一些运行时/ SP安装等.有没有办法调试/弄清楚这里发生了什么.当应用程序运行时,我查看并搜索了NewtonSoft.dll,它在临时的asp.net文件中获得了正确的版本.?

任何帮助都可以非常感谢.我不想安装我的运行时.

c# json.net

12
推荐指数
2
解决办法
4625
查看次数

标签 统计

c# ×2

.net ×1

.net-3.5 ×1

json.net ×1

linq ×1

linq-to-sql ×1