C# 在抽象类中声明并在派生类中初始化的结构在实例化时不可见
我一直在寻找这个问题,但没有运气,我希望它不会重复。 我有一个抽象类C# 在抽象类中声明并在派生类中初始化的结构在实例化时不可见,c#,struct,visibility,derived-class,C#,Struct,Visibility,Derived Class,我一直在寻找这个问题,但没有运气,我希望它不会重复。 我有一个抽象类 public abstract class IFDB { public struct Estructura_TablaCuentasBancarias { public string NombreTabla; public string NumeroDeCuenta; public string Entidad; public string DN
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
}
}
estrustructure\u TablaCuentasBancarias
是一个。为了在接口中创建IFDB
,您需要从IFDB
public interface IFDB
{
Estructura_TablaCuentasBancarias Foo { get; set; }
// other properties/functions from the IFDB class
}
public struct Estructura_TablaCuentasBancarias
{
// struct declaration
}
现在还不清楚你有什么问题。考虑修改你的问题,那么人们如何回答这个问题呢?我不在乎分数,我感谢那些试图帮助我(不像你)解决阻碍我的问题的人。。。有时候最愚蠢的问题是最糟糕的。我不知道你从哪里得到消极的态度。我只是做了一个评论,旨在帮助您找到答案。正如我之前所说,如果结构的实例和初始化是在IFDB类中完成的,那么它就可以完美地工作。但我不想这样,因为我想把这个类(IFDB)变成一个接口。因此,我想在派生类(CntrDBSQLSRVCompac)中执行实例和声明。谢谢你的回复。我现在没时间,我会尽快看一看。谢谢。@user1368116:该图像显示IFDB.cs中有一个错误,它说明了一些有关虚拟关键字的信息OK,这里编译了一个图像,具有相同的问题和所有代码。抱歉,如果前面的图像导致混淆:@user1368116:好的,您的问题是ClsCntrlDB的类型为IFDB,它没有公开您要查找的字段。您应该将ClsCntrlDB声明为CntrDBSQLSRVCompac。我现在明白了这一点,但是您的解决方案有一个大问题。如果我计划使用一个接口,那么逻辑上要做的事情就是将实例ClsCntrlDB声明为IFDB,否则创建一个接口就没有意义了。谢谢。@user1368116:你的问题是“我做错了什么?”,你还说“我要把它变成一个接口,但现在不是这个问题”。也许你应该问另一个问题,并说明你目前的问题。