小编epi*_*ile的帖子

如何在C#中检查运行时类型的可分配性?

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表达式或数组创建表达式

c# types

10
推荐指数
1
解决办法
3574
查看次数

标签 统计

c# ×1

types ×1