- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
问题
我在两个相应的 dll 中有以下代码。 dll1 依赖于 dll2。
当 DoWork()
被调用它将执行 myInterface.MyListMethod(ImmutableList<byte>.Empty);
美好的。当它去执行myInterface.MyArrayMethod(ImmutableArray<byte>.Empty);
抛出以下异常:
Exception:System.MissingMethodException: Method not found: Namespace.MyArrayMethod(System.Collections.Immutable.ImmutableArray'1<Byte>)
dll1.dll
public class TestClass
{
public void DoWork()
{
IMyInterface myInterface = new MyInterface();
myInterface.MyListMethod(ImmutableList<byte>.Empty);
myInterface.MyArrayMethod(ImmutableArray<byte>.Empty);
}
}
dll2.dll
public class MyInterface : IMyInterface
{
public void MyArrayMethod(ImmutableArray<byte> byteArray)
{
// Do stuff
}
public void MyListMethod(ImmutableList<byte> byteList)
{
// Do stuff
}
}
public interface IMyInterface
{
void MyArrayMethod(ImmutableArray<byte> byteArray);
void MyListMethod(ImmutableList<byte> byteList);
}
测试
从我的角度来看,这似乎是ImmutableArray<>
这是错误的,因为我已经用多种类型尝试过这个,包括你在上面看到的,以及 Immutable 命名空间中的其他类型。它只发生在 ImmutableArray<>
上据我所试。
我还确保这两个 dll 都是当前的 dll,并且 gac 周围没有一些旧的缓存版本。更新接口(interface)以获得另一个方法,然后在 MyArrayMethod 按预期工作之前调用它。
Visual Studios 特别不会在包含 ImmutableArray<>
的接口(interface)上获取对方法的调用引用参数,但它将用于带有 ImmutableList<>
的方法.如果您删除 ImmutableArray<>
,它也会获取引用方法中的参数。
解决方案构建良好,但只有当它在运行时尝试 JIT 时才会抛出此错误。
最佳答案
如果我添加对“System.Runtime”的项目引用,一切正常。就是这样。
当我尝试重现它时,我最终解决了这个问题,VS 通过自动添加一个项目引用来解决了 System.Runtime
的文化问题。这最终解决了更大的问题。 VS 中的引用现在工作正常,代码运行没有问题。
当我传递 null 时,它将在没有 System.Runtime
的情况下构建,但是当我调用该方法时,它会抛出异常。但是,当尝试传递默认的 ImmutableArray
时,它需要我添加 System.Runtime
。这解决了问题。
我不知道为什么这解决了我的问题,但确实如此。
关于c# - 在不同 dll 的接口(interface)上调用带有 ImmutableArray<> 的方法时抛出 System.MissingMethodException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36166516/
有什么方法(可能是肮脏的 hack)来创建一个只使用指定数组而不是复制它的 ImmutableArray? 我有一个我知道不会改变的数组,我想创建一个 ImmutableArray 以允许客户端安全地
为什么 ImmutableArray Microsoft Immutable Collections NuGet 包版本中似乎没有 1.0.34 ? 最佳答案 ImmutableArray不存在于您的
我有一个带有静态成员的内部静态类 MyLists: internal static ImmutableArray MyList = new ImmutableArray { "asd", "q
所以我在多线程环境中工作,我不想一直使用 ImmutableArray,因为它是线程安全的。 不幸的是,ImmutableArray 实现线程不安全接口(interface),因此 LINQ 中的 S
我正在尝试对现有的 ImmutableArray 进行切片在一种方法中,我认为我可以使用构造方法 Create(ImmutableArray a, int offset, int count)像这样:
我在 ImmutableArray<> 中遇到了一个看起来很奇怪的错误(使用 BCL 不可变集合 v1.0.12.0,运行时 .NET 4.5): 我在同一命名空间下的同一源文件中有以下两个完全相同的
假设我有如下方法: unsafe void Convert(byte* ptr, int length) { var span = new Span(ptr, length); var
ImmutableArray 之间有什么区别?和 ImmutableList ,最好在哪里使用它们? 最佳答案 以下是一些可能有助于解释的读物:Please welcome ImmutableArra
当我尝试隐式转换时出现此错误: Cannot implicitly convert type 'System.Array' to 'System.Collections.Immutable.Immut
问题 我在两个相应的 dll 中有以下代码。 dll1 依赖于 dll2。 当 DoWork()被调用它将执行 myInterface.MyListMethod(ImmutableList.Empty
我是一名优秀的程序员,十分优秀!