【问题标题】:C# assy in Powershell - calling contructor with enum params defined within the classPowershell 中的 C# 组件 - 使用类中定义的枚举参数调用构造函数
【发布时间】:2013-02-07 22:13:01
【问题描述】:

我遇到的问题似乎没有在任何主题中涉及,或者至少没有涉及 我还没找到。

我正在尝试使用构造函数需要枚举类型参数的 C# 程序集 这也是在类中定义的。

    namespace Utils.Translate
{
    /// <summary>
    /// Converts ASCII to EBCDIC or vice-versa
    /// </summary>
    public class AsciiEbcdic
    {
       /// <summary>
       /// The enumerator CharSet2Use determines which target character set to use.
       /// </summary>
       public enum CharSet2Use 
       {
          A2E = 0,          //ASCII to EBCDIC
          E2A               // EBCDIC to ASCII
       };

       // Constructor
       public AsciiEbcdic( CharSet2Use whichSet )
       {
       }
    }
}

加载程序集没问题:

[System.Reflection.Assembly]::LoadFile( "EbcdicAscii.dll" )

但是,当我尝试实例化它时,使用

$nameSpace = "Utils.Translate.EbcdicAscii"

$var = New-Object $nameSpace( [Utils.Translate.EbcdicAscii+Char2Set2Use]::A2E )

我得到错误:

Unable to find type [Utils.Translate.EbcdicAscii+Char2Set2Use]: make sure that the assembly containing this type is loaded.

我还尝试了以下方法:

$var = New-Object $nameSpace -ArgumentList [Utils.Translate.EbcdicAscii+Char2Set2Use]::A2E

我得到错误:

New-Object : Cannot find type [Utils.Translate.EbcdicAscii]: make sure the assembly containing this type is loaded.

也尝试将参数传递为 A2E, 'A2E', 0, '0' 无济于事。

有没有办法通过在类中定义的枚举器数据类型来实例化这个对象?

【问题讨论】:

    标签: powershell


    【解决方案1】:

    您的代码中有一些拼写错误(类名和枚举类型名): 在add-Type 之后:

    你写过:

    $nameSpace = "Utils.Translate.EbcdicAscii"
    $var = New-Object $nameSpace( [Utils.Translate.EbcdicAscii+Char2Set2Use]::A2E )
    

    但它是这样的:

    $nameSpace = "Utils.Translate.AsciiEbcdic"
    $var = New-Object $nameSpace( [Utils.Translate.AsciiEbcdic+CharSet2Use]::A2E )
    

    $var = New-Object $nameSpace -ArgumentList A2E 
    
    $var
    Utils.Translate.AsciiEbcdic
    

    【讨论】:

    • 天啊,好尴尬。我看了这么久的源代码,我完全错过了它。这证明让别人检查你的代码真的很有帮助。谢谢一百万,C.B.
    • @VagaBond 很高兴为您提供帮助!您可以接受我的回答以及其他对您的问题的回答,成为优秀的 SO 用户;)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-10-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多