c# - 如何在运行时检查动态数据类型的类型?

标签 c# asp.net .net dynamic types

在我的 ASP.NET 网站中,我有一个返回 dynamic 类型值的方法。根据特定条件和结果,此方法将返回 bool 值或 SortedList。

代码太多无法粘贴,但例如:

public dynamic ReturnThis(dynamic value)
{
    if(someConditionIsMet)
    {
        value = true;
    }
    else
    {
        value = new List<String>().Add(new Person() { Name = "Travis" });
    }

    return value;
}

我的问题是,我想在调用此方法之后确定值的数据类型,然后再操作或读取其数据。但我不确定如何检查 dynamic value 是什么类型。我该怎么做?

最佳答案

这两种解决方案都对我有用。在 Smeegs 链接的文档中,is提到了关键字。我想出了一个更具可读性的解决方案:

if(value is Boolean) { }if(value is List<Person>) { }


工作测试:

using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication3348
{
    class Program
    {
        class Person
        {
            string Name = "";
        }

        static void Main(string[] args)
        {

            Console.WriteLine("Assigning List to value");
            dynamic value = new List<Person>();

            if (value is List<Person>)
            {
                Console.WriteLine("value is a list");
            }

            value = false;

            Console.WriteLine("Assigning bool to value");
            if (value is Boolean)
            {
                Console.WriteLine("value is bool");
            }

            Console.Read();
        }
    }
}

关于c# - 如何在运行时检查动态数据类型的类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23143184/

相关文章:

asp.net - ASP.NET MVC ViewModel模式

.Net CIL jmp 操作码和泛型方法

c# - asp.net 动态样式缺少最小高度

c# - 持续运行的Web服务

asp.net - 我怎样才能为单个 HTML 页面添加一点点活力,同时具有最小的依赖性和最大的可移植性?

c# - 派生类型的 FluentValidation SetCollectionValidator

C#密码生成器,生成多个密码

c# - 如何检测 WinRT 中未插入的耳机插孔?

c# - 从 asp.net 中的文件夹下载文件

c# - 如何获取类库的当前目录?