【问题标题】:dropdown list with all DataType in C#C# 中所有数据类型的下拉列表
【发布时间】:2012-05-03 03:06:13
【问题描述】:

如何做下拉列表以包含 C# 中的所有数据类型

System.Int32,System.string

所以我可以从这个下拉列表中选择变量类型

【问题讨论】:

  • 你的意思是ComboBox?这是winforms还是ASP.NET?
  • "System.Int32,System.string" 这些不是数据类型你是什么意思?所有类型?
  • 您的意思是包含类型列表的组合框吗?
  • @annonymously 正是我所需要的

标签: c# drop-down-menu


【解决方案1】:

如果您只是在寻找原始类型的列表,您可以在这里找到:

http://msdn.microsoft.com/en-us/library/hfa3fa08%28v=vs.110%29.aspx

或者,如果你想要一个返回原始类型列表的方法,试试这个:

public List<Type> GetTypes(){
        return typeof(int).Assembly.GetTypes().Where(t => t.IsPrimitive).ToList();
    }

由于它使用 Linq,您将需要:

using System.Linq;

【讨论】:

  • 我知道,请问有什么方法可以得到所有这种类型吗??
  • "值类型列表" 这列出了 .NET 中的基本类型,而不是所有可用的值类型。事实上,这个列表甚至不包含System 命名空间中的所有值类型。例如,DateTimeSystem 命名空间中的一个结构,但它不在此列表中。
  • 公平点。我根据这个问题做出的假设是他正在寻找原始类型。我已经更新了我的措辞。
  • 很好但我在 DropDownlist 字符串和 DataTime 中看不到 ??
  • 据我所知,对于.Net,它们分别只是一个任意的类和结构。如果您想要 System 命名空间中的所有类型,则可以删除“Where”子句,但这将是 1000 多种类型。吉德呢?时间跨度呢?由于您的要求是任意的,因此您需要维护自己的列表。
【解决方案2】:

最后,

Enum.GetNames(typeof(System.TypeCode))

这是在说什么

【讨论】:

    【解决方案3】:

    您可以使用List&lt;Type&gt;,如here 所述。将此列表用作您的ComboBox 的数据。

    如果您需要自动获取所有类型,请参阅this 答案

    【讨论】:

    • 您需要使标签使用String 类型的值,以便它们显示,否则不会出现任何项目。
    【解决方案4】:

    如果您想遍历程序集并获取所有类型的名称。

    private List<string> GetTypes()
    {
        List<string> typeNames = new List<string>();
    
        /// or AppDomain.CurrentDomain.GetAssemblies() or loop through the folder with assemblies
        Assembly assembly = System.Reflection.Assembly.GetExecutingAssembly();
        foreach (AssemblyName an in assembly.GetReferencedAssemblies() )
        {
            foreach (Type type in an.GetTypes())
            {
                typeNames.add(type.Name);
            }  
        }
        return typeNames;
    }
    

    如果您只想列出基本类型,请转到 C# 规范并编辑组合框。

    【讨论】:

    • 不相信 "an.GetTypes()" 是对的,更像是 "an.GetType()" 但这仍然不会有 GetEnumerator 的定义
    猜你喜欢
    • 1970-01-01
    • 2012-05-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-09
    • 1970-01-01
    相关资源
    最近更新 更多