gpt4 book ai didi

c# - 接口(interface) : Convert My existing concrete code to an abstract code

转载 作者:太空宇宙 更新时间:2023-11-03 15:06:03 25 4
gpt4 key购买 nike

我正在开发一个 UWP 应用程序。我有一个包含管理器和服务的 PCL。我的经理与我的服务交互并提供输出。在我的服务中,我使用异步等待调用来与我的 API 进行交互。我创建了一个虚拟解决方案。代码如下:

我的虚拟经理:

public class AccountManager
{

public string uniqueId { get; set; }

public int GetAccountId()
{
Services.AccountServices HelloAccount = new Services.AccountServices();
return HelloAccount.GenerateAccountId(uniqueId);
}
}

public class DummyManager
{

public ICollection<string> GetDeviceNames(int accountId)
{
Services.NameService MyNameService = new Services.NameService(accountId);
return MyNameService.ProvideNames();
}
}

我的虚拟服务:

 internal class NameService
{
public NameService(int Id)
{
AccountId = Id;
}

public int AccountId = 0;

public ICollection<string> ProvideNames()
{
return new List<string>()
{
"Bob",
"James",
"Foo",
"Bar"
};
}

}

internal class AccountServices
{

public int GenerateAccountId(string uniqueID)
{
return 11;
}

}

现在我的服务和管理器与我使用它们的结构相同,下面是我如何与我的公共(public)管理器交互并保持服务内部:

在我的 UI MainPage 代码隐藏中:

protected override void OnNavigatedTo(NavigationEventArgs e)
{
DataServices.Managers.AccountManager Hello = new DataServices.Managers.AccountManager();
Hello.uniqueId = "AsBbCc"; //fetched from another service.
var id = Hello.GetAccountId();

DataServices.Managers.DummyManager Dummy = new DataServices.Managers.DummyManager();
var names = Dummy.GetDeviceNames(id);
}

我的问题是目前我的 MainPage 与我的 manager 紧密耦合,即使我使用 MVVM 模式,我的 ViewModel 也会与我的经理紧密耦合。如何添加抽象层?这些实体(管理器、服务、数据库)中的哪些应该是有助于提供抽象的接口(interface)?我需要帮助。我已经为此上传了一个虚拟解决方案。谢谢:)

My Entire dummy solution以便更好地理解。

最佳答案

如此处所示,管理人员增加的值(value)很少(事实上:没有),那么为什么要有他们呢? Refactoring明确谈论这种情况并建议内联类重构。

How do I add a layer of abstraction?

这是一个相当广泛的问题,取决于各种情况,其中最重要的是:您希望通过添加抽象层来解决哪个问题?

FWIW,我的书 Dependency Injection in .NET包含一个全面的 MMVM 示例,虽然是在 WPF 中,而不是 UWP。

关于c# - 接口(interface) : Convert My existing concrete code to an abstract code,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43497269/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com