我正在尝试为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字符串的静态部分。
预先感谢
答案 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);
无论如何,非常感谢您的帮助,如果没有帮助,我将无法自我定位。