Структура, объявленная в абстрактном классе и инициализированная в производном классе, невидима при создании экземпляра

Я искал этот вопрос, но не повезло, надеюсь, он не повторился. У меня есть один абстрактный класс.

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();

Но при попытке использовать структуру "TablaCuentasBancarias" ее нет в списке возможных функций / переменных. Если экземпляр и инициализация структуры выполняются в классе IFDB, это работает отлично, но я хочу сделать класс IFDB интерфейсом.

Что я делаю не так?

Спасибо.

2 ответа

Решение

Следующий код прекрасно работает для меня, так что, возможно, у вас есть другая проблема.

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
}
Другие вопросы по тегам