小编Sof*_*San的帖子

将列表序列化为JSON

我有一个如下所示的对象模型:

public MyObjectInJson
{
   public long ObjectID {get;set;}
   public string ObjectInJson {get;set;}
}
Run Code Online (Sandbox Code Playgroud)

该属性ObjectInJson是已经序列化的版本,包含嵌套列表的对象.目前,我正在MyObjectInJson手动序列化这样的列表:

StringBuilder TheListBuilder = new StringBuilder();

TheListBuilder.Append("[");
int TheCounter = 0;

foreach (MyObjectInJson TheObject in TheList)
{
  TheCounter++;
  TheListBuilder.Append(TheObject.ObjectInJson);

  if (TheCounter != TheList.Count())
  {
    TheListBuilder.Append(",");
  }
}
TheListBuilder.Append("]");

return TheListBuilder.ToString();
Run Code Online (Sandbox Code Playgroud)

我想知道我是否可以替换这种危险的代码JavascriptSerializer并得到相同的结果.我该怎么做?

谢谢.

c# asp.net json

171
推荐指数
5
解决办法
39万
查看次数

如何使用动作过滤器和HttpResponseMessage在Web API中使用ETag

我有一个ASP.Net Web API控制器,它只返回用户列表.

public sealed class UserController : ApiController
{
    [EnableTag]
    public HttpResponseMessage Get()
    {
        var userList= this.RetrieveUserList(); // This will return list of users
        this.responseMessage = new HttpResponseMessage(HttpStatusCode.OK)
        {
            Content = new ObjectContent<List<UserViewModel>>(userList, new  JsonMediaTypeFormatter())
        };
        return this.responseMessage;
       }
}
Run Code Online (Sandbox Code Playgroud)

和一个动作过滤器属性类EnableTag,负责管理ETag和缓存:

public class EnableTag : System.Web.Http.Filters.ActionFilterAttribute
{
    private static ConcurrentDictionary<string, EntityTagHeaderValue> etags = new ConcurrentDictionary<string, EntityTagHeaderValue>();

    public override void OnActionExecuting(HttpActionContext context)
    {
        if (context != null)
        {
            var request = context.Request;
            if (request.Method == HttpMethod.Get)
            {
                var …
Run Code Online (Sandbox Code Playgroud)

c# asp.net-web-api

17
推荐指数
4
解决办法
2万
查看次数

使用xamarin的移动跨平台的本地化和仅限iOS的问题

我在Xamarin有一个针对Android,iOS和Windows手机的项目.我用核心(PCL库)在不同平台之间共享公共代码.我在我的核心库中添加了资源文件(.net资源).Resx,并在我的一个ViewModel中读取了我在以下代码片段中使用的特定于文化的字符串:

public string GetString() 
{  
    // CommonResources is the name of my resource file   
    ResourceManager resManager = new ResourceManager(typeof(CommonResources));   
    return resManager.GetString("LoginLabel",CultureInfo.CurrentCulture); 
}
Run Code Online (Sandbox Code Playgroud)

"LoginLabel"是我的资源键,其值为"登录"(英文)和荷兰语中的"inloggen".

我在我的PCL项目中为英语和荷兰语创建了两个资源文件CommonResources. CommonResources.resx
CommonResources.nl-NL.resx

在android,iOS和windows手机中,我将文化设置如下:

Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("nl-NL");
Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo("nl-NL");
Run Code Online (Sandbox Code Playgroud)

这适用于Android和Windows手机.

但对iOS来说它不起作用.它总是从英文文件返回资源字符串.文化已正确设置,并以调试模式显示.但不知何故,它无法从荷兰资源加载资源字符串.

所以问题是,可以使用PCL为所有平台本地化字符串(.Net方式)吗?有谁有任何想法?提前致谢.

c# localization xamarin.ios xamarin.android portable-class-library

15
推荐指数
1
解决办法
4850
查看次数

构建MonoTouch.Dialog应用程序

Xamarin.com上的示例中,您可以构建基本M.T. Dialog应用程序,但是如何构建真实应用程序?

你呢:

1)从那里创建一个单独的DialogViewControllerview/RootElement或者,

2)DialogViewController为每个视图创建一个UINavigationController并根据需要使用并推送它?

根据你的答案,更好的反应是如何?我已经构建了示例任务应用程序,所以我理解向表中添加元素,单击它以转到"下一个"视图进行编辑,但是如何单击以进行非编辑?如果答案是1号,如何点击按钮,进入下一个视图?

修订:

可能没有一个正确的答案,但我想出来的似乎对我们有用.上面的数字2是所选择的,下面是当前存在的代码的示例.我们所做的是创建一个导航控制器,AppDelegate并在整个应用程序中提供对它的访问,如下所示:

public partial class AppDelegate : UIApplicationDelegate
{
    public UIWindow window { get; private set; }
    //< There's a Window property/field which we chose not to bother with

    public static AppDelegate Current { get; private set; }
    public UINavigationController NavController { get; private set; }

    public override bool FinishedLaunching (UIApplication app, NSDictionary options)
    {
        Current = this;
        window …
Run Code Online (Sandbox Code Playgroud)

uinavigationcontroller xamarin.ios monotouch.dialog dialogviewcontroller

10
推荐指数
1
解决办法
2076
查看次数

Xamarin.Forms - 主/详细页面和导航历史记录问题

我有一个使用masterdetail页面在所有页面显示菜单的应用程序.导航在我的应用程序中以两种方式发生.一个来自菜单,另一个来自仪表板.因此,如果我导航到另一个页面,然后按"返回"按钮,它将关闭该应用程序.它不记得导航历史记录.主详细信息页面如下:

 public class RootPage : MasterDetailPage
    {
        public RootPage ()
        {
            var menuPage = new MenuPage ();

            menuPage.Menu.ItemSelected += (sender, e) => NavigateTo (e.SelectedItem as MenuItem);

            Master = menuPage;
            Detail = new NavigationPage (new ContractsPage ());
        }

        void NavigateTo (MenuItem menu)
        {
            Page displayPage = (Page)Activator.CreateInstance (menu.TargetType);
            Detail =    new NavigationPage (displayPage);
            IsPresented = false;
        }
    }
Run Code Online (Sandbox Code Playgroud)

所以任何想法如何克服这个问题?

c# master-detail xamarin.forms

10
推荐指数
1
解决办法
2万
查看次数

如何在ios中永久运行后台服务以同步数据

嗨,我正在开发一个App,它要求在Web服务器上进行同步操作(数据提交和检索).

用户可以离线提交表单(即将数据存储到设备上的本地数据库).只要网络可用,后台服务就应该将这些数据提交给Web服务器.

后台服务的详细要求如下:

  • 后台服务将首先检查网络是否可用
  • 如果网络可用,它将在设备上的本地数据库(SQLite)中收集数据存储
  • 它将数据提交给服务器
  • 要求服务器拥有任​​何新数据,如果可用,请获取该数据并更新设备上的本地数据库.

我是iOS和xamarin/monotouch的新手,想知道如何实现这个目标吗?

我了解iOS中的各种背景模式,例如背景提取,nsurlsession,后台传输等.

我尝试实现后台提取,我认为适合我的情况.但它依靠自己的时间运行.

还想知道如果用户已杀死我的应用程序,那么后台提取也将调用并仍然运行我的应用程序?

我的appdelegate - > PerformFetch方法中的代码是这样的:

if(networkService.IsNetworkAvailable())
{
   if(this.syncDataService.DownloadNewDataFromServer())
   {
       Console.WriteLine("Data downloaded successfully from server..");
   }
   if(this.syncDataService.UploadDataToServer())
   {
       Console.WriteLine("Data submitted successfully to server...");
   }
   completionHandler(UIBackgroundFetchResult.NewData);
}
else
{
   completionHandler(UIBackgroundFetchResult.NoData);
}
Run Code Online (Sandbox Code Playgroud)

更新:最后我已经像这样实现了它(希望它对某些人有帮助):

public class LocationUpdatedEventArgs : EventArgs
{
    private CLLocation location;

    public LocationUpdatedEventArgs(CLLocation location)
    {
        this.location = location;
    }

    public CLLocation Location
    {
        get { return this.location; }
    }
}

public class LocationManager
    {
        private static DateTime lastServiceRun;

        private CLLocationManager locMgr; …
Run Code Online (Sandbox Code Playgroud)

c# background xamarin.ios ios xamarin

8
推荐指数
1
解决办法
1万
查看次数

单元测试自定义属性类

我有一个custom attribute用于标记成员的(不constructor,不properties):

[AttributeUsage(AttributeTargets.Property | AttributeTargets.Field, AllowMultiple = false, Inherited = true)]
public sealed class MyCustomAttribute : Attribute { }
Run Code Online (Sandbox Code Playgroud)

我该如何对此进行单元测试?而且,澄清......我知道'什么',但不知道'怎么样'

我假设有一种方法可以对其进行单元测试,以确保其正确AttributeUsage到位?那怎么能这样呢?每次我创建一个mock类并尝试将属性添加到错误的东西时它都不会让我编译,所以如何创建一个糟糕的模拟类来测试呢?

c# attributes unit-testing mocking

7
推荐指数
1
解决办法
6910
查看次数

MonoTouch.Dialog:NavigationBar中的返回项

我在这个问题上遇到了困难.我的MainWindow.xib,有一个NavigationController,其视图是从另一个继承的xib.

现在,我DialogViewController从主视图中推送a ,但我在第二个视图的导航栏上看不到后退按钮.

是否有任何特定的东西我需要设置为什么DialogViewController时候从它推出UIViewController.

谢谢并问候Abhishek

c# monodevelop xamarin.ios monotouch.dialog

6
推荐指数
1
解决办法
3672
查看次数

Unity:无法构造InjectionPolicy类型

这是一个我几个小时都在苦苦挣扎的难题.这是背景:

  1. 我们Unity IoC在MVC4网络应用程序中使用
  2. 我们有一对ApiControllers (IHttpController)和一堆常规控制器(IController)
  3. 工作的解决方案IControllers很好
  4. 该解决方案IHttpControllers已经运行了好几个月,现在因类型解析错误而失败,其中包含详细信息" The type InjectionPolicy cannot be constructed. You must configure the container to supply this value"
  5. 常规控制器和Api控制器都采用具有ICustomerService依赖关系的依赖关系,该ICustomerRepository依赖关系又具有IClient依赖关系,但这些依赖关系都不是新的或不同的.
  6. ICustomerServiceApiController解决问题中删除依赖性(但该接口已明确配置并在其他地方工作)
  7. 我们已经在HttpControllerActivatorUnity中注册并拦截了解决IHttpControllers它的调用- 它在容器上失败.解析,即使查看容器,控制器显然也在那里.

我搜索了这个特定的错误并没有找到任何结果.有没有人见过它或它是否给你任何关于可能发生的事情的线索?

非常感谢!

更新:我已将其缩小到ICustomerRepository分辨率(再次,在所有其他流程中工作).错误是:

Resolving Xxx.CustomerRepository,(none) (mapped from Xxx.ICustomerRepository, (none))
    Resolving Microsoft.Practices.Unity.InterceptionExtension.PolicyInjectionBehavior,(none)
    Resolving parameter "policies" of constructor Microsoft.Practices.Unity.InterceptionExtension.PolicyInjectionBehavior(Microsoft.Practices.Unity.InterceptionExtension.CurrentInterceptionRequest interceptionRequest, Microsoft.Practices.Unity.InterceptionExtension.InjectionPolicy[] policies, Microsoft.Practices.Unity.IUnityContainer container)
      Resolving Microsoft.Practices.Unity.InterceptionExtension.InjectionPolicy[],(none)
Run Code Online (Sandbox Code Playgroud)

ioc-container inversion-of-control unity-container asp.net-mvc-4

6
推荐指数
0
解决办法
341
查看次数

如何唯一标识在会话0中运行的Internet Explorer窗口?

我正在创建WCF web services自动化internet explorer.有多个Web服务调用需要访问同一个实例Internet Explorer.但是,由于WCF服务托管在IISWeb服务的所有调用都在会话0中执行.现在访问Internet ExplorerI use 的同一个实例,SHDocVw.InternetExplorer.HWND它返回Internet Explorer实例的窗口句柄.在下面的代码中,作为窗口WCFIIS 7的服务执行句柄时,由于会话0隔离,总是返回0.此外,我无法挂钩到同一个IE实例或循环所有打开的IE窗口.我可以枚举进程列表并查找IE在会话0中打开的每个窗口的进程ID ,但不能转换System.Diagnostics.ProcessSHDocVw.InternetExplorer对象.

以下是我的代码:

public int GetWhd()
{
    InternetExplorer ie = new InternetExplorer();
    ie.Visible = true;
    return ie.HWND;
}

public int SetWhd(string whd)
{
    int wh = Int32.Parse(whd);
    InternetExplorer ie = null;
    ShellWindows s = new ShellWindows();
    foreach (SHDocVw.InternetExplorer ie1 in s) …
Run Code Online (Sandbox Code Playgroud)

c# wcf session-0-isolation internet-explorer-8

5
推荐指数
1
解决办法
1687
查看次数

在 SQL 中创建 asp.net 身份用户

这个问题是上一个问题的修改版(我删除了那个问题)

我有一个正在运行的网站,(C#) MVC 5并且ASP.Net Identity 2.0. 在站点内,所有用户管理功能都可以正常工作,创建、更新、删除。

我们有一个 SQL 作业,可以在网站的先前版本上批量创建所有帐户,我现在需要更新它以在Identity 2.0. 我在任何可用的论坛中都找不到有关如何执行此操作的任何信息。

任何信息,将不胜感激。

我已经做了一些工作,我遇到的最后一个问题是弄清楚如何对Identity 2.0密码进行编码。我似乎无法找出使用什么算法。

这是身份 1 对密码进行编码的方式:

SET @encoded_hashed_password = dbo.fbase64_encode(HASHBYTES('SHA1', Cast(@salt as varbinary(MAX)) + CAST(@ClearTextPassword AS varbinary(MAX))))
Run Code Online (Sandbox Code Playgroud)

我正在寻找 Identity 2.0 的等效项。

sql asp.net-identity

5
推荐指数
1
解决办法
3773
查看次数

Xamarin.在HTML5视频标签和android问题中构建webview并查看/播放视频

我正在使用MediaPickerfrom 捕获视频xamarin.labs,然后在我的Web服务器上上传该视频.之后,我检索该视频以在WebView中显示HTML5视频标签.

这适用于iOS.但是相同的代码在Android上不起作用.

我在android中创建自定义渲染器来创建,Webchromeclient但它不在Android上播放视频.

带视频的示例html5(我也尝试使用tag中的type参数<video>:

<Doctype! HTML>
<html>
<body><video src="www.myserver.com/video1.mp4" controls height="150" width="150"/>
</body>
</html/>
Run Code Online (Sandbox Code Playgroud)

这是我的PCL项目中的Web视图部分:

public class MyWebView: WebView
{
}
Run Code Online (Sandbox Code Playgroud)

这是我的页面:

public class VideoPage: ContentPage
{
   public VidoePage()
   {
      var webView = new MyWebView();
      webView.Source = new HtmlSource {Html = abovementionedHtml};
      var layout = new StackLayout()
     {
        Childern = {webWiew}
     };
     this.Content= layout;
}
Run Code Online (Sandbox Code Playgroud)

Android渲染器:

[assembly: ExportRenderer(typeof(MyWebView), typeof(MyWebViewRenderer))] 
namespace VideoSample.Droid
{

using Xamarin.Forms.Platform.Android;

public class MyWebViewRenderer : WebRenderer …
Run Code Online (Sandbox Code Playgroud)

c# xamarin.forms xamarin.forms.labs

5
推荐指数
1
解决办法
5009
查看次数