我正在开发一款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 Managers
互动并保持services
internal
的方式:
在我的UI主页CodeBehind:
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以便更好地理解。
答案 0 :(得分:0)
如此处所示,管理员添加的内容很少(实际上是 no ),为什么要这样做? Refactoring明确谈到了这种情况并建议内联类重构。
如何添加抽象层?
这是一个相当广泛的问题,取决于各种情况,其中最重要的是:您希望通过添加一个抽象层来解决哪个问题?
FWIW,我的书Dependency Injection in .NET包含一个全面的MMVM示例,尽管在WPF中,而不是UWP。