我第一次尝试在我的项目中实现 N 层架构。
我创建了 BLL、DAL 和 GUI
这是在 GUI
XmlSettingsBLL xmlSettings = new XmlSettingsBLL();
var newDict = new NewDictionary()
{
StrDataSourceType = "AccessMdb",// DataSourceType.AccessMdb,
DictionaryID = Guid.NewGuid().ToString(),
FirstColumnName = "Kelime",
SecondColumnName = "Karsilik",
TableName = "kelimelerpro",
LastShowedID = 0,
Name = "kpds",
Path = "kelimeler.mdb"
};
xmlSettings.AddNewDictionary(newDict);
这是在 BLL
public bool AddNewDictionary(NewDictionary list)
{
list.DatasourceType = (DataSourceType)Enum.Parse(typeof (DataSourceType), list.StrDataSourceType);
IDictionaryList newDictionary =list;
try
{
helper.AddDictionary(newDictionary);
return true;
}
catch
{
return false;
}
}
public class NewDictionary : IDictionaryList
{
public string Name { get; set; }
public string Path { get; set; }
public string DictionaryID { get; set; }
public string TableName { get; set; }
public int LastShowedID { get; set; }
public string FirstColumnName { get; set; }
public string SecondColumnName { get; set; }
public DataSourceType DatasourceType { get; set; }
public string StrDataSourceType { get; set; }
}
这是在 DAL
public void AddDictionary(IDictionaryList list)
{
var channelElem = xdoc.Element("MemorizeSettings");
var dictionaries = channelElem.Element("Dictionaries");
XAttribute[] attrs = new XAttribute[8];
attrs[0] = new XAttribute("Name", list.Name);
attrs[1] = new XAttribute("Path", list.Path);
attrs[2] = new XAttribute("TableName", list.TableName);
attrs[3] = new XAttribute("DatasourceType", Enum.GetName(typeof(DataSourceType),list.DatasourceType));
attrs[4] = new XAttribute("LastShowedID", "0");
attrs[5] = new XAttribute("FirstColumnName", list.FirstColumnName);
attrs[6] = new XAttribute("SecondColumnName", list.SecondColumnName);
attrs[7] = new XAttribute("DictionaryID", list.DictionaryID);
var newdict = new XElement("Dictionary", attrs);
dictionaries.Add(newdict);
xdoc.Save(fileName);
}
public interface IDictionaryList
{
string Name { get; set; }
string Path { get; set; }
string DictionaryID { get; set; }
string TableName { get; set; }
int LastShowedID { get; set; }
string FirstColumnName { get; set; }
string SecondColumnName { get; set; }
DataSourceType DatasourceType { get; set; }
}
因此,在 GUI 中,自然需要添加 DAL 作为参考,因为我从 DAL 中的 IDictionary 派生了 NewDictionary。但我想将 GUI 和 DAL 分开。
除了创建一个 IDictionary 对象,我该怎么做?我希望问题很清楚