我有一段非常简单的代码,在编译时会出现以下错误
错误CS0012类型“ IsLongModifier”在程序集中定义
未引用。您必须添加对程序集的引用
'Microsoft.VisualC,版本= 1.0.0.0.0,文化=中性,
PublicKeyToken = b03f5f7f11d50a3a'。
以下是代码的相关部分
grid.get_NumericalCell(rowIndex, "Bench2");
我在get_NumericalCell函数调用上模糊不清。
该方法可从以C ++ / C#实现的第三方库中获得。下面是该方法的签名
double get_NumericalCell(int rowIndex, string columnName);
如果添加对Microsoft.VisualC的引用,则错误消失。
IsLongModifier class上的参考文档在解释为什么我遇到此问题方面没有太大帮助。
有人可以解释为什么我需要引用Microsoft.VisualC.IsLongModifier-我在代码中看不到在哪里引用它。
最佳答案
第三方库可能引用了Microsoft.VisualC
。get_NumericalCell()
的签名在C ++中可能有一个重写,如下所示:
__gc class Grid
{
double get_NumericalCell(int i, string columnName) {}
double get_NumericalCell(long l, string columnName) {}
};
它将被编译为如下所示的IL:
[...] float64 get_NumericalCell(int32 i, ...) [...]
[...] float64 get_NumericalCell(int32 modopt([Microsoft.VisualC]Microsoft.VisualC.IsLongModifier) l, ...) [...]
添加了可选修饰符
IsLongModifier
来区分两个签名,否则它们是相同的。这将方法隐藏在C#中,但是编译器可能仍需要引用Microsoft.VisualC
。您可以通过GetOptionalCustomModifiers()
方法进行反射检查。关于c# - 使用C#代码生成问题-CS0012-IsLongModifier,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38383629/