在抽象类中声明并在派生类中初始化的结构在实例化时不可见

本文关键字:实例化 结构 初始化 声明 抽象类 派生 | 更新日期: 2023-09-27 17:56:56

我一直在寻找这个问题,但没有运气,我希望它不会重复。我有一个抽象类。

public abstract class IFDB
{
     public struct Estructura_TablaCuentasBancarias
    {
        public string NombreTabla;
        public string NumeroDeCuenta;
        public string Entidad;
        public string DNIPropietario;
        public Estructura_TablaCuentasBancarias(string NombreTabla, string NumeroDeCuenta, string Entidad, string DNIPropietario)
        {
            this.NombreTabla = NombreTabla;
            this.NumeroDeCuenta = NumeroDeCuenta;
            this.Entidad = Entidad;
            this.DNIPropietario = DNIPropietario;
        }
    }

}

和派生类:

class CntrDBSQLSRVCompac: IFDB
{
     public readonly Estructura_TablaCuentasBancarias TablaCuentasBancarias =
        new Estructura_TablaCuentasBancarias("CuentasBancarias", "Numero De Cuenta", "Entidad", "DNI Propietario");

在程序中,我已经完成了实例:

protected IFDB ClsCntrlDB;
...
ClsCntrlDB = new CntrDBSQLSRVCompac();

但是当尝试使用estructure"TablaCuentasBancarias"时,它不在可能的函数/变量列表中。如果结构的实例和初始化是在IFDB类中完成的,那么它可以完美地工作,但是,我想使IFDB类成为一个接口。

我做错了什么?

谢谢。

在抽象类中声明并在派生类中初始化的结构在实例化时不可见

以下代码对我来说效果很好,所以也许您还有其他问题。

abstract class FooBase
{
    public struct Bar
    {
    }
}
class Foo : FooBase
{
    public readonly Bar BarInstance = new Bar();
}
class TestClass
{
    public static void Test()
    {
        var foo = new Foo();
        var bar = foo.BarInstance; //works fine
    }
}
Estructura_TablaCuentasBancarias是一个

嵌套结构。为了在界面中IFDB,您需要从IFDB中提取嵌套结构

public interface IFDB
{
    Estructura_TablaCuentasBancarias Foo { get; set; }
    // other properties/functions from the IFDB class
}
public struct Estructura_TablaCuentasBancarias
{
    // struct declaration
}