Type类有一个几乎可以工作的方法IsAssignableFrom().不幸的是,只有当两种类型相同或第一种类型在第二种类型的层次结构中时,它才会返回true.它说十进制不能从int赋值,但是我想要一个方法来指示小数可以从int分配,但是int并不总是可以从小数分配.编译器知道这一点,但我需要在运行时解决这个问题.
这是一个扩展方法的测试.
[Test]
public void DecimalsShouldReallyBeAssignableFromInts()
{
Assert.IsTrue(typeof(decimal).IsReallyAssignableFrom(typeof(int)));
Assert.IsFalse(typeof(int).IsReallyAssignableFrom(typeof(decimal)));
}
Run Code Online (Sandbox Code Playgroud)
有没有办法实现IsReallyAssignableFrom(),它可以像IsAssignableFrom()一样运行,但也传递上面的测试用例?
谢谢!
编辑:
这基本上就是它的使用方式.这个例子不能为我编译,所以我必须将Number设置为0(而不是0.0M).
[AttributeUsage(AttributeTargets.Property | AttributeTargets.Parameter)]
public class MyAttribute : Attribute
{
public object Default { get; set; }
}
public class MyClass
{
public MyClass([MyAttribute(Default= 0.0M)] decimal number)
{
Console.WriteLine(number);
}
}
Run Code Online (Sandbox Code Playgroud)
我收到此错误:错误4属性参数必须是属性参数类型的常量表达式,typeof表达式或数组创建表达式