0

私が抱えている問題は、どのトピックでも取り上げられていないか、少なくともまだ見つかっていないようです。

クラス内でも定義されている列挙型パラメーターをコンストラクターが予期する 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」として渡そうとしましたが、役に立ちませんでした。

クラス内で定義された列挙子データ型を渡して、このオブジェクトをインスタンス化する方法はありますか?

4

1 に答える 1

2

コードにタイプミスがあります (クラス名と列挙型名): 後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
于 2013-02-07T11:35:08.430 に答える