C# 使用CustomAttributeBuilder时参数不匹配(装箱小数?)
我有以下代码作为使用reflection.emit生成接口的系统的一部分 void IPropertyCreator.AddAttributeparams对象[]参数 { //将参数转换为类型 var argTypes=新类型[args.Length]; 对于int i=0;iC# 使用CustomAttributeBuilder时参数不匹配(装箱小数?),c#,.net,reflection,reflection.emit,C#,.net,Reflection,Reflection.emit,我有以下代码作为使用reflection.emit生成接口的系统的一部分 void IPropertyCreator.AddAttributeparams对象[]参数 { //将参数转换为类型 var argTypes=新类型[args.Length]; 对于int i=0;i
有人知道我如何解决这个问题吗?试着用普通C代码编写:
class TestAttribute : Attribute {
public TestAttribute(object value) { }
}
[Test(1.2m)] // NOTE: CS0182
class Example { }
您不能将System.Decimal用于属性构造函数参数。双人也可以。C语言规范的第17.1.3节暗示了这个问题,但对于这个特殊情况并没有太具体。十进制有点像标准值类型的继代。例如,Ecma 335中从未提及。C编译器使它看起来像一个基本类型,但CLR不以同样的方式处理它。试着用普通C代码编写:
class TestAttribute : Attribute {
public TestAttribute(object value) { }
}
[Test(1.2m)] // NOTE: CS0182
class Example { }
您不能将System.Decimal用于属性构造函数参数。双人也可以。C语言规范的第17.1.3节暗示了这个问题,但对于这个特殊情况并没有太具体。十进制有点像标准值类型的继代。例如,Ecma 335中从未提及。C编译器使它看起来像一个基本类型,但CLR不以同样的方式处理它