初めてプロジェクトに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にあるIDictionaryからNewDictionaryを派生させたため、当然、参照としてDALを追加する必要があります。しかし、GUIとDALを分離したいと思います。
IDictionaryオブジェクトを作成する以外に、どうすればよいですか?質問が明確であることを願っています