如何将公共类“ salida”中的“ gdbFullName”字符串值传递给字符串“ fcName”?

时间:2019-11-07 08:59:28

标签: c# arcobjects

我正在尝试为shp设置默认输出名称。文件。为此,我要将gdbFullValue变量从公共类salida内部传递给字符串fcName,以便输出中包括最终名称的激活代码。

我认为这与吸气剂和吸气剂有关。但是我已经尝试了一段时间,但我无法理解我所缺少的。

   class Salida
{
    ShapefileManage _shpManageOutput;
    IFeatureClass _outpuFc;
    public String _gdbName;
    public String gdbFullName;
    public Salida(ShapefileManage shpManageOutput, ISpatialReference spatialReference, String gdbName)
    {
        this._shpManageOutput = shpManageOutput;
        this.crearCapaSalida(spatialReference, esriGeometryType.esriGeometryPoint);
        this._gdbName = gdbName;
        string gdbFullName = gdbName.Substring(gdbName.LastIndexOf("/") + 1);
    }

    private string fcName = string.Format("PositionalAccuracySamplePoints" + "_" + "{0}", gdbFullName.Substring(0, 14));
    public string returnOutputName()
    { return fcName; }

我得到的是一个NullReferenceValue或只是一个gdbFullName字符串,该字符串为空,因此最终输出名称仅包含fcName字符串的静态部分。

预先感谢

2 个答案:

答案 0 :(得分:0)

您正在尝试在设置gdbFullName之前提取激活码。 请注意,fcName是一个私有字段,它是在构造函数运行之前开始初始化的。

为什么不将文件名的创建放入returnOutputName方法中?

答案 1 :(得分:0)

感谢您的建议。事实是,我认为我没有展示我必须在帖子中显示的内容:

公共课Salida正在另一个课中得到体现。因此,我要做的就是设置实例化类时要计算的fcName,而不是在外部。我在这里留下了有效的代码。

class Salida
{
    string _gdbName;
    ShapefileManage _shpManageOutput;
    IFeatureClass _outpuFc;
    //ISpatialReference spatialReference;


    public Salida(ShapefileManage shpManageOutput, ISpatialReference spatialReference, string gdbName)
    {
        this._gdbName = gdbName;
        this._shpManageOutput = shpManageOutput;
        crearCapaSalida(spatialReference, esriGeometryType.esriGeometryPoint);
    }

在另一个类中,可以找到主要过程的地方是我用实际的fcName实例化salida类的地方;

// Instanciamos los objetos gdbManage and shpManage
            gdbManageInput = new GeodatabaseManage(_inputGdbPath);
            shpManageOutput = new ShapefileManage(_outputPath);

            // Instanciamos la clase salida, pasandole el spatialReference del dataset.
            IFeatureDataset fd = gdbManageInput.getFeatureDataset(_featureDataset);
            ISpatialReference spatialReference = (fd as IGeoDataset).SpatialReference;
            string gdbName = _inputGdbPath.Substring(_inputGdbPath.LastIndexOf('\\') + 1);
            string last14gdbName = gdbName.Substring(0, 14);
            string nombreSalida = "PositionalAccuracyPoints_" + last14gdbName;
            salida = new Salida(shpManageOutput, spatialReference, nombreSalida);

无论如何,非常感谢您的帮助,如果没有帮助,我将无法自我定位。