我们共享一个 poco 的
- ServiceStack 网络服务
- 使用 MySQL 的 ServiceStack Orm
- 使用 Sqlite.net 的 Xamarin 移动客户端。
问题是共享课程变得一团糟。
[PrimaryKey, AutoIncrement]
public int Id { get; set; }
#if __MOBILE__
[Indexed]
#else
[Index]
#endif
public string UserAccountId { get; set; }
#if __MOBILE__
[Indexed]
#else
[Index]
#endif
如果还不够糟糕,我需要
- 约束数据库中每个字段的长度......
- 将这些对象保存在 MongoDb 中。幸运的是,他们有一个 AutoMapper 类可以在运行时执行此操作。
不知道该怎么办。我失败的想法包括:
尝试使用:[Conditional("DEBUG")]。但这无济于事
似乎 sqlite.net 使用了自己的属性
[AttributeUsage (AttributeTargets.Property)] 公共类 IndexedAttribute : 属性
所以它不会找到 Mysql [Index] 属性
可以尝试在每个属性上包含两个属性
[索引] [索引] public string UserAccountId { get; 放; }
我试图把它变成两个单行但 c# VS 抱怨
#if __MOBILE__ [Indexed] #endif #if __MOBILE__ [Index] #endif
最后,** APPEARS ** 唯一可行的方法是将接口保留为类的单一定义,并有许多具体的类以不同的方式装饰。
有任何想法吗??