首页> C#>我如何使用我的接口的实现,而不创建对实现的依赖?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了首页> C#>我如何使用我的接口的实现,而不创建对实现的依赖?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2224字,纯文字阅读大概需要4分钟。
内容图文
![首页> C#>我如何使用我的接口的实现,而不创建对实现的依赖?](/upload/InfoBanner/zyjiaocheng/683/a296da0208a44913ad332d1d8f64500b.jpg)
我正在尝试利用从学习SOLID原理中学到的知识来制作简单的ASP.NET Webform.
我已经将解决??方案设置为3个项目:主要的asp.net Webforms项目,Data Access Interfaces类库项目和Data Access类库项目(具有Data Access Interfaces项目中接口的实现).
我在数据访问接口程序集中有一个ICoinStorage接口,看起来像这样(Coin只是生活在数据访问接口程序集中的DTO类):
public interface ICoinStorage
{
void Persist(IEnumerable<Coin> coins);
}
该接口的实现在名为CoinSqlServerStorage的数据访问程序集中使用ADO.NET,如下所示:
public class CoinSqlServerStorage : ICoinStorage
{
private string sqlConnectionString;
public CoinSqlServerStorage(string connectionStringName)
{
sqlConnectionString = ConfigurationManager.ConnectionStrings[connectionStringName].ConnectionString;
}
public void Persist(IEnumerable<Coin> coins)
{
using (var connection = new SqlConnection(sqlConnectionString))
using (var command = new SqlCommand() { Connection = connection })
{
foreach (var coin in coins)
{
command.Parameters.AddWithValue("@Name", coin.Name);
command.Parameters.AddWithValue("@Weight", coin.Weight);
command.Parameters.AddWithValue("@Thickness", coin.Thickness);
command.Parameters.AddWithValue("@Value", coin.Value);
command.Parameters.AddWithValue("@Condition", (int)coin.Condition);
command.CommandText = "INSERT INTO Coins (Name, Weight, Thickness, Value, ConditionID) " +
"VALUES (@Name, @Weight, @Thickness, @Value, @Condition);";
command.Connection.Open();
command.ExecuteNonQuery();
}
}
}
}
我的问题是:如何在webforms项目中使用CoinSqlServerStorage类而不创建对Data Access程序集的依赖?我要制作它,以便用户可以访问InsertCoin.aspx页面来定义新硬币并将其存储在数据库中…
当我准备在InsertCoin.aspx页面的Page.Load事件中创建CoinSqlServerStorage类的实例时,出现了我的问题,但是意识到这会在数据访问程序集上创建依赖关系,而不仅仅是依赖于数据访问接口部件…
我该如何进行?
解决方法:
在这种情况下,您可以再创建一个项目,然后像Data Access DI一样调用它,该项目将引用Data Access和Data Access Interfaces项目.该项目将负责为所有其他项目提供所需的数据访问接口实现(需要这样做).
但是即使在这种情况下,您也将有两个依赖性:数据访问接口和数据访问DI-第一个将提供接口,第二个将提供实现.
即使您将拥有多个Data Access What项目,例如Data Access Mongo,Data Access Sql,Data Access Raven等,此Data Access DI项目也将使您的其他项目与实现隔离.
内容总结
以上是互联网集市为您收集整理的首页> C#>我如何使用我的接口的实现,而不创建对实现的依赖?全部内容,希望文章能够帮你解决首页> C#>我如何使用我的接口的实现,而不创建对实现的依赖?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。