在我的解决方案中,我有一个包含以下类的项目(DLL):
public class cDB : IErrorExtender
{
// Exception per le funzioni Static
#region IErrorExtender members
public ErrorList ErrorListMessages { get; set; } // ErrorList
public bool IsInError // Errori?
{
get { return ErrorListMessages.Count > 0; }
}
#endregion
public cLogger logger { get { return ErrorListMessages.TheLog; } } // Logger
private string ConnString { get; set; } // Stringa di connessione
private string DbName { get; set; } // DB name
public OleDbConnection Cnn; // Oggetto connection
public OleDbTransaction _trans { get; private set; } // Oggetto per transazione ole
/// <summary>
/// Costruttore
/// </summary>
/// <param name="cnn"></param>
/// <param name="connectDb"></param>
/// <param name="theLog"></param>
public cDB(OleDbConnection cnn, bool connectDb, cLogger theLog)
{
Cnn = cnn;
DbName = System.IO.Path.GetFileName(cnn.DataSource);
ErrorListMessages = new ErrorList(theLog, LoggingTypes.OnlyErrors, this.ToString());
this.ConnString = cnn.ConnectionString;
if (connectDb)
{
try
{
ConnectionOpen();
}
catch (Exception exc)
{
ErrorListMessages.SetInternalError(exc, "cDB()");
}
}
}
public void Test()
{}
}
由于它是公开的,所以在主要项目中有很多引用(请考虑这是一个遗留项目):
Engine.cDB dbo = new Engine.cDB();
现在,在主项目中,我有一个引用cDB的类:
public class cDataBase : INotifyPropertyChanged
{
public cDB DBO { get; }
}
基本上我想要的是,类cDB必须仅在cDataBase类的实例中才可用,所以像这样:
cDataBase.DBO.Test();
,而不是通过创建上面所写的等式。有帮助吗?
答案 0 :(得分:4)
一个选择是将cDB-Class的构造函数设为内部,因此只能在同一项目/类库中使用:
public class cDB : IErrorExtender
{
internal cDB() { }
}