在LabVIEW中创建.net中List的步骤简析

电子说

1.2w人已加入

描述

最近有项目的个别需求需要使用.net中的一些东西来实现,如其中需要用到泛型集合List,这在C#中去创建是很简单的事情,如List lblList = new List(); 起初我也没太在意,认为使用.net函数选板中的构造器就可以创建该实例对象,但是最后发现根本行不通,尝试了很久之后都快要放弃了,最后还是让我在微软的官网找了一些线索,最终解决了这个问题。

忽然想起之前有小伙伴在群里也问过这个问题,当时我好像给出了错误的答案,故总结一下顺便纠正之前的错误。

LabVIEW

看完这个激动不已,在System命名空间中通过Activator.CreateInstance 静态方法进行创建,在.net函数选板中找到Invoke Node,然后在右键菜单中找到“Select Class >> .NET >> Browse...”,如下图所示:

LabVIEW

在弹出的对话框中,找到Assembly选中mscorlib(4.0.0),并在下面的列表中找到System,如下图所示:

LabVIEW

双击展开System命名空间,找到Activator,如下图所示:

LabVIEW

然后鼠标左键单击Method,选择CreateInstance(Type type),如下图所示:

LabVIEWLabVIEW

此时发现改方法需要传入Type参数,按图索骥找到了System命名空间中的GetType(String)静态方法,如下图所示:

LabVIEW

找到改静态方法的方式同上述CreateInstance(Type type)一样,这里不再赘述,如下图所示:

LabVIEWLabVIEW

此时发现改方法需要传入typeName参数,其实就是类型的程序集限定名称,

文档中给出了参考代码,如下图所示:

 

using System;
using System.Collections.Generic;
using System.Globalization;

public class Example
{
    public static void Main()
    {
        Type t = typeof(String);
        ShowTypeInfo(t);

        t = typeof(List<>);
        ShowTypeInfo(t);

        var list = new List();
        t = list.GetType();
        ShowTypeInfo(t);

        Object v = 12;
        t = v.GetType();
        ShowTypeInfo(t);

        t = typeof(IFormatProvider);
        ShowTypeInfo(t);

        IFormatProvider ifmt = NumberFormatInfo.CurrentInfo;
        t = ifmt.GetType();
        ShowTypeInfo(t);
    }

    private static void ShowTypeInfo(Type t)
    {
        Console.WriteLine($"Name: {t.Name}");
        Console.WriteLine($"Full Name: {t.FullName}");
        Console.WriteLine($"ToString:  {t}");
        Console.WriteLine($"Assembly Qualified Name: {t.AssemblyQualifiedName}");
        Console.WriteLine();
    }
}
// The example displays output like the following:
//    Name: String
//    Full Name: System.String
//    ToString:  System.String
//    Assembly Qualified Name: System.String, mscorlib, Version=4.0.0.0, Culture=neutr
//    al, PublicKeyToken=b77a5c561934e089
//
//    Name: List`1
//    Full Name: System.Collections.Generic.List`1
//    ToString:  System.Collections.Generic.List`1[T]
//    Assembly Qualified Name: System.Collections.Generic.List`1, mscorlib, Version=4.
//    0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
//
//    Name: List`1
//    Full Name: System.Collections.Generic.List`1[[System.String, mscorlib, Version=4
//    .0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]
//    ToString:  System.Collections.Generic.List`1[System.String]
//    Assembly Qualified Name: System.Collections.Generic.List`1[[System.String, mscor
//    lib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]], mscorl
//    ib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
//
//    Name: Int32
//    Full Name: System.Int32
//    ToString:  System.Int32
//    Assembly Qualified Name: System.Int32, mscorlib, Version=4.0.0.0, Culture=neutra
//    l, PublicKeyToken=b77a5c561934e089
//
//    Name: IFormatProvider
//    Full Name: System.IFormatProvider
//    ToString:  System.IFormatProvider
//    Assembly Qualified Name: System.IFormatProvider, mscorlib, Version=4.0.0.0, Cult
//    ure=neutral, PublicKeyToken=b77a5c561934e089
//
//    Name: NumberFormatInfo
//    Full Name: System.Globalization.NumberFormatInfo
//    ToString:  System.Globalization.NumberFormatInfo
//    Assembly Qualified Name: System.Globalization.NumberFormatInfo, mscorlib, Versio
//    n=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089

 

我们在传入改typeName参数时,传入Full Name即可,如果你不知道你想创建的类型的Full Name可以先修改参考代码并执行,即可获取。比如我想创建List对象,改类型的Full Name就是:System.Collections.Generic.List`1[[System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]],如下图所示:

LabVIEW

实际使用中我想创建的是List>对象,如下图所示:

LabVIEW

理解之后你就可以创建原本你以为无法创建的对象实例了。




审核编辑:刘清

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分