Структура, объявленная в абстрактном классе и инициализированная в производном классе, невидима при создании экземпляра
Я искал этот вопрос, но не повезло, надеюсь, он не повторился. У меня есть один абстрактный класс.
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
}