在Enterprise Libary中的DAAB中增加一個屬性
正常的DAAB設定只會有兩個參數 DefaultBatabase跟Name,另外還有一個Custom Provider Mappings的Node在下面很少用到
今天要教大家怎樣簡單的增加第三個參數,至於加了這參數要做啥我就管不著啦
我用的版本是很舊的2.0,看了一下3.1的看起來差不多,不過5.0的可能就差很多了,如果有人想改其他版本的再說吧
首先到Data專案下找到型別 Microsoft.Practices.EnterpriseLibrary.Data.Configuration.DatabaseSettings 這個是runtime時DAAB的設定內容
然後加上要客製的屬性
private const string myCustomParaProperty = "myCustomPara";
/// <summary>
/// 設定或取得MyCustomPara
/// </summary>
[ConfigurationProperty( myCustomParaProperty, IsRequired=false )]
public string MyCustomPara
{
get
{
return this[ myCustomParaProperty ] + "";
}
set
{
this[ myCustomParaProperty ] = value;
}
}
要注意的是在ConfigurationProperty內所設定的字串就是到時XML設定檔內所使用的,大小寫都要一樣否則就會出error
然後到Data.Configuration.Design專案下找到Microsoft.Practices.EnterpriseLibrary.Data.Configuration.Design.DatabaseSectionNode,這個是DAAB那個Node的內容
加上一樣要加上我們要加的屬性
private string myCustomPara;
/// <summary>
/// MyCustomPara
/// </summary>
public string MyCustomPara
{
get { return myCustomPara; }
set
{
myCustomPara = value;
}
}
在來到同專案的Microsoft.Practices.EnterpriseLibrary.Data.Configuration.Design.DatabaseSectionNodeBuilder內,這個是用來生成剛剛修改的DatabaseSectionNode,所以在生成時要把設定給讀進來
在Build方法內增加一行設定
public DatabaseSectionNode Build()
{
DatabaseSectionNode node = new DatabaseSectionNode();
ProviderMappingsNode mappingsNode = new ProviderMappingsNode();
foreach (DbProviderMapping mapping in databaseSettings.ProviderMappings)
{
mappingsNode.AddNode(new ProviderMappingNode(mapping));
}
node.AddNode(mappingsNode);
//增加此行讀取設定
node.MyCustomPara = databaseSettings.MyCustomPara;
return node;
}
public DatabaseSettings Build()
{
DatabaseSettings settings = new DatabaseSettings();
foreach (ProviderMappingNode node in hierarchy.FindNodesByType(databaseSectionNode, typeof(ProviderMappingNode)))
{
settings.ProviderMappings.Add(node.ProviderMapping);
}
if (null != databaseSectionNode.DefaultDatabase) settings.DefaultDatabase = databaseSectionNode.DefaultDatabase.Name;
//增加此行寫入設定
settings.MyCustomPara = databaseSectionNode.MyCustomPara;
return settings;
}
做完這些後就可以使用了
如果要調整該參數的分類或下方的說明文字,再回到DatabaseSectionNode添加屬性設定就可以了
隨便填值寫入後XML會長這樣