标签: portable-class-library

将 JSON 对象转换为没有格式和缩进的字符串

我在便携式类库 (PCL) 项目(针对 Xamarin.Android 和 Xamarin.iOS)中使用 Json.NET (Newtonsoft.Json) 包,并希望获得没有格式的 JSON 对象的字符串表示(即没有新行,没有标签等)。我怎样才能做到这一点?

目前,如果我调用JObject.ToString()一个JObject实例,我会得到一个带有新行 ( \n) 字符的字符串,如下所示:

"{\n  \"key\": \"value\"\n}"
Run Code Online (Sandbox Code Playgroud)

从本质上讲,我希望做的是解析或可能不包含格式/缩进/等,解析JSON对象转换为它做一个字符串JSON对象的初始字符串表示包含格式/缩进/ etc和结束带有一个字符串,如下所示:

"{\"key\":\"value\"}"
Run Code Online (Sandbox Code Playgroud)

PCL 项目中的 Json.NET (Newtonsoft.Json) 包是否可以实现这一点?我可以用另一个图书馆来完成这个吗?

json.net xamarin.ios xamarin.android portable-class-library xamarin

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

Xamarin - 使用便携式类库是一种强制性的方法吗?

最近我被要求为新应用程序设置设计,需要使用Xamarin构建.该团队已经为Android,iOS和Windows Phone创建了一个DEMO应用程序.因此,基本上这个演示版本需要转换/重构为适当的可维护产品.

在查看代码当前在DEMO应用程序中实现的内容时,我发现使用了一些不能用作PCL的第三方库.这意味着我无法使用PCL构建我的应用程序,除非我可以将此第三方库移植到PCL中.

我的发现是:

  • 我们在第三方库中使用的功能在所有3个平台上都能正常运行
  • 我找不到任何阻止的原因,我不应该使用普通的类库

问题:

  • 有什么阻塞的原因导致我无法使用普通的类库吗?
  • 公共应用商店是否会接受这些应用,或者这根本不是问题?
  • 如果没有..你能否提出建议,特别是照顾正常的类库
  • 如果有..如何将第三方库移植到PCL或有其他方法可以解决?

cross-platform xamarin.ios portable-class-library xamarin

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

带有 BouncyCastle-PCL 的 C# PCL HMACSHAX

我想在可移植的 C# 类中实现这个逻辑:

static JsonWebToken()
        {
            HashAlgorithms = new Dictionary<JwtHashAlgorithm, Func<byte[], byte[], byte[]>>
            {
                { JwtHashAlgorithm.HS256, (key, value) => { using (var sha = new HMACSHA256(key)) { return sha.ComputeHash(value); } } },
                { JwtHashAlgorithm.HS384, (key, value) => { using (var sha = new HMACSHA384(key)) { return sha.ComputeHash(value); } } },
                { JwtHashAlgorithm.HS512, (key, value) => { using (var sha = new HMACSHA512(key)) { return sha.ComputeHash(value); } } }
            };
        }
Run Code Online (Sandbox Code Playgroud)

但是HMACSHA256HMACSHA384并且HMACSHA512在便携式库中不存在。

首先我尝试使用https://github.com/AArnott/PCLCrypto 但我总是得到: …

c# bouncycastle portable-class-library

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

Xamarin Froms Listview 未显示所有项目

你好,Xamarin 受害者,

我的 ListView 有问题,其中未显示 itemsource 中的所有项目。显示了总共 12 个项目中的 6 个。在这里,您有我的 XAML 页面,您可以在其中查看我如何使用列表视图(列表视图在中间部分使用):

<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
         xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
         x:Class="Prototype_Deinceps.views.subject.DetailPage"
         xmlns:multiplechoices="clr-namespace:Prototype_Deinceps.viewincludes.QuestionTypes;assembly=Prototype_Deinceps"
         xmlns:CustomElements="clr-namespace:Prototype_Deinceps.CustomElements;assembly=Prototype_Deinceps"
         Title="Detail">
<!-- ToolBar -->
<ContentPage.ToolbarItems>
<ToolbarItem Icon="Edit.png">
  <ToolbarItem.Text>
    <OnPlatform x:TypeArguments="x:String"
                iOS="Wijzig"/>
  </ToolbarItem.Text>
</ToolbarItem>
</ContentPage.ToolbarItems>

<Grid>
  <Grid.RowDefinitions>
    <RowDefinition Height="6*" />
    <RowDefinition Height= "9*" />
    <RowDefinition Height="6*" />
  </Grid.RowDefinitions>
  <Grid.ColumnDefinitions>
    <ColumnDefinition Width="*" />
    <ColumnDefinition Width="*" />
  </Grid.ColumnDefinitions>

  <!-- Top part of the screen that consist of basic info of the entity-->
  <StackLayout x:Name="BasicInfo" Margin="10,10,10,5" Grid.Row="0" Grid.Column="0">
    <Label Text="Basic Info" …
Run Code Online (Sandbox Code Playgroud)

c# xaml portable-class-library xamarin xamarin.forms

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

在 Xamarin forms pcl 项目中使用 HttpUtility

我正在尝试在我的 Xamarin 表单应用程序中使用 HttpUtility。我有一个 Pcl 项目。这不可能吗?我尝试添加 system.web 命名空间,但没有成功。请协助。我怎样才能让它发挥作用。

string postString = String.Format("username={0}&password={1}&grant_type=password", HttpUtility.HtmlEncode(username), HttpUtility.HtmlEncode(password));
Run Code Online (Sandbox Code Playgroud)

c# portable-class-library xamarin.forms

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

哪个.Net Standard 版本支持哪个Android 版本?

我想将 Xamarin PCL 项目转换为 .Net Standard。

我的问题是,这将支持哪些版本的 Android?我当前的项目支持 Android 4。.Net Standard 能支持吗?它是否取决于 .Net Standard 版本?

我看过这张表,但它只告诉我支持的“Xamarin”版本,我不明白它和 Android 版本之间的联系。.Net Standard 是与 Android 版本无关(有点像 C# 版本与 .Net 版本是分开的)还是 .Net Standard 与特定版本的 Android 相关联(在它支持的其他框架中)?

c# xamarin.android portable-class-library xamarin .net-standard

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

typeof(ICollection <>).GetTypeInfo().IsAssignableFrom(typeof(IList <>))

我想检查以下内容

typeof( ICollection<> ).GetTypeInfo().IsAssignableFrom( targetProperty.PropertyType.GetTypeInfo() )
Run Code Online (Sandbox Code Playgroud)

传入的参数IsAssignableFrom是一个IList<Something>.但它正在返回虚假.

以下内容也返回false.

typeof( ICollection<> ).GetTypeInfo().IsAssignableFrom( targetProperty.PropertyType.GetTypeInfo().GetGenericTypeDefinition() )
Run Code Online (Sandbox Code Playgroud)

即使以下情况也会返回false.

typeof( ICollection<> ).GetTypeInfo().IsAssignableFrom( typeof(IList<>) )
Run Code Online (Sandbox Code Playgroud)

难道后者肯定会回归真实吗?

如果targetProperty.PropertyType可以是任何类型,我怎样才能得到正确的结果?它可以是a List<T>,a ObservableCollection<T>,a ReadOnlyCollection<T>,自定义集合类型等.

c# reflection portable-class-library

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

PCLStorage和二进制数据

我只是这个PCL库中的新手,我正在开发一个带有Xamarin的iPhone应用程序,我无法找到将其保存在手机上的方法.我最接近的是PCLStorage,但他只保存文本.还有另一种方法可以用其他程序保存二进制文件.谢谢.

foreach (images element in json_object)
{
            //var nameFile = Path.Combine (directoryname, element.name);
            try{
                IFile file = await folder_new.GetFileAsync(element.name);
            }catch(FileNotFoundException ex ){
                RestClient _Client = new RestClient(element.root);
                RestRequest request_file = new RestRequest("/images/{FileName}");
                request_file.AddParameter("FileName", element.name, ParameterType.UrlSegment);
                _Client.ExecuteAsync<MemoryStream>(
                        request_file,
                        async Response =>
                        {
                                if (Response != null)
                                {
                                    IFolder rootFolder_new = FileSystem.Current.LocalStorage;
                                    IFile file_new = await rootFolder_new.CreateFileAsync(element.name,CreationCollisionOption.ReplaceExisting);
                                    await file_new.WriteAllTextAsync(Response.Data);
                                }
                        });
            }
        }
Run Code Online (Sandbox Code Playgroud)

ios portable-class-library xamarin

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

在PCL中与HttpClient进行异步调用

我有一个PCl,我想在其中使用HttpClient进行异步调用.我编码像这样

 public static async Task<string> GetRequest(string url)
    {            
        var httpClient = new HttpClient() { MaxResponseContentBufferSize = int.MaxValue };
        HttpResponseMessage response = await httpClient.GetAsync(url);
        return response.Content.ReadAsStringAsync().Result;
    }
Run Code Online (Sandbox Code Playgroud)

但等待显示错误"无法等待System.net.http.httpresponsemessage"之类的消息.

如果我使用这样的代码比一切顺利但不是异步方式

public static string GetRequest(string url)
    {
        var httpClient = new HttpClient() { MaxResponseContentBufferSize = int.MaxValue };
        HttpResponseMessage response = httpClient.GetAsync(url).Result;
        return response.Content.ReadAsStringAsync().Result;
    }
Run Code Online (Sandbox Code Playgroud)

我只是希望这个方法以异步方式执行.

这是屏幕截图:

在此输入图像描述

c# asynchronous portable-class-library dotnet-httpclient

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

Xamarin.Forms无法从资源返回的Null中读取文本文件

我正在使用Xamarin.Forms,并且尝试读取文本文件时尝试从资源,返回的Null值以下代码读取文本文件。

 var assembly = typeof(BookPage).GetTypeInfo().Assembly;
 Stream stream = assembly.GetManifestResourceStream("AboutResources.txt");
Run Code Online (Sandbox Code Playgroud)

//这里的程序集返回空值,我找不到文本资源

我的代码在从ContentPagePLC项目继承的以下类下

 public class BookPage : ContentPage
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

c# portable-class-library xamarin xamarin.forms

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