在移动应用程序中收集信息

时间:2014-01-16 20:09:02

标签: c# design-patterns xamarin mobile-application

我使用Xamarin Framework开发移动应用程序。

我想在移动应用程序运行期间收集一些信息并将其发送给某个接收器。信息是消息[Event, Action, Arguments (Name-Value pair list)]

现在,我有一个很大的静态类,有很多方法可以在不同的应用程序中调用。这允许我拥有强类型消息及其参数。问题:很难维护许多类似的方法和字符串常量。

是否有任何设计模式可以执行这些操作...也许我应该将所有允许的消息存储在XML文件中并自动生成c#方法...这通常是如何完成的?

1 个答案:

答案 0 :(得分:0)

我认为你的问题很好。

以下是我如何设计你的课程,我不会这样做。

enum Event { /* names here */ }
enum Action  { /* names here */ }
class Arguments { / * properties here for each possible argument */ }

interface IServer { /* include methods on server class */ }

class Server : IServer
{
    public Task Send(Event evt, Action action, Arguments args) { /* code here */ }
}

这里有几点:

  • 在任何地方使用枚举而不是字符串
  • 如果您有可能的参数列表,请为每个参数创建一个具有属性的类。这样,您就不必记住任何名称或使类充满常量。
  • 我从方法返回一个Task,因此您可以使用async / await
  • 我不喜欢静态类,因为我更喜欢使用某种服务位置或IoC容器。例如来自现场服务样本应用程序的this class
  • 除非你正确处理它们,否则Statics在Android上也不会很好用。
  • 使用界面可以让您以后灵活地交换课程。如果需要,您还可以针对虚假服务器编写单元测试。