1

編集: C# オブジェクトを使用する Powershell コードを追加しました。すべてを C# で実行し、Powershell で操作するのは本当に簡単です。ありがとうございました!

PowerShell コードで使用する C# で 2 つのオブジェクトを作成しています。FeatureObject を作成し、その変数を設定したい。次に、FeatureAttributes を作成し、それを FeatureObject のリストに追加します。文字列、整数などを設定および取得できますが、FeatureObject のリストに FeatureAttribute を追加するのに問題があります。

C#

using System;
using System.Collections;
using System.Collections.Generic;
public class FeatureObject {
    public string layerName;
    public int numFeatures;
    public string geometry;
    public string unit;
    List<FeatureAttr> objFtcAttr;
    public FeatureObject()
    {
        objFtcAttr = new List<FeatureAttr>();
    }   
    public List<FeatureAttr> ftcAttr { get; set; }
} 

public class FeatureAttr {
    public string AttrKeyName;
    public string AttrDataType;
    public string AttrNumericRange;
    List<String> allValuesOfAttr = new List<String>();
    public void setValueOfAttr (string value) {
            this.allValuesOfAttr.Add(value);
    }
    public List<String> getValuesOfAttr() {
        return(this.allValuesOfAttr);
    }
}

PS

Add-Type -Path C:\projects\bin\FCObject.dll
$ftcObj = New-Object FeatureObject
$ftcAttr = New-Object FeatureAttr
$ftcObj = New-Object FeatureObject
$ftcObj.geometry = $geometry
$ftcObj.ftcAttr.Add($ftcAttr)

また、以下と上記のように、ゲッターとセッターを常に明示的に宣言する必要がありますか? $ftcObj.geometry = $geometry のようにデータを取得して設定することはできませんか??

public string geometry
    {
        get { return geometry; }
        set { geometry = value; }
    }

また

public string geometry {get; set; }

助けてください!

4

1 に答える 1

0

おそらくFeatureObject、デフォルトのリストをインスタンス化するように変更します。

public class FeatureObject 
{
    public FeatureObject()
    {
        ftcAttr = new List<FeatureAttr>();
    }
    public List<FeatureAttr> ftcAttr {get; set; }
} 

次に、PowerShell で何かを追加し始めます。

PowerShell で作成する場合は、次の構文を使用します。

$ftcObj = New-Object FeatureObject
$ftcObj.ftcAttr = New-Object 'Collections.Generic.List[FeatureAttr]'

ジェネリック リストの型文字列を引用符で囲む必要があり、名前空間で修飾された完全な型名をFeatureAttr.

最後に、プロパティを明示的に宣言するか、C# の自動プロパティ構文を使用するかは問題ではありません。自動プロパティは、コンパイラによって明示的なゲッター/セッターに変換されます。

于 2012-06-13T15:08:12.153 に答える