我有一个如下所示的对象模型:
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并得到相同的结果.我该怎么做?
谢谢.
我有一个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) 我在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
从Xamarin.com上的示例中,您可以构建基本M.T. Dialog应用程序,但是如何构建真实应用程序?
你呢:
1)从那里创建一个单独的DialogViewController树view/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
我有一个使用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)
所以任何想法如何克服这个问题?
嗨,我正在开发一个App,它要求在Web服务器上进行同步操作(数据提交和检索).
用户可以离线提交表单(即将数据存储到设备上的本地数据库).只要网络可用,后台服务就应该将这些数据提交给Web服务器.
后台服务的详细要求如下:
我是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) 我有一个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类并尝试将属性添加到错误的东西时它都不会让我编译,所以如何创建一个糟糕的模拟类来测试呢?
我在这个问题上遇到了困难.我的MainWindow.xib,有一个NavigationController,其视图是从另一个继承的xib.
现在,我DialogViewController从主视图中推送a ,但我在第二个视图的导航栏上看不到后退按钮.
是否有任何特定的东西我需要设置为什么DialogViewController时候从它推出UIViewController.
谢谢并问候Abhishek
这是一个我几个小时都在苦苦挣扎的难题.这是背景:
Unity IoC在MVC4网络应用程序中使用ApiControllers (IHttpController)和一堆常规控制器(IController)IControllers很好IHttpControllers已经运行了好几个月,现在因类型解析错误而失败,其中包含详细信息" The type InjectionPolicy cannot be constructed. You must configure the container to supply this value"ICustomerService依赖关系的依赖关系,该ICustomerRepository依赖关系又具有IClient依赖关系,但这些依赖关系都不是新的或不同的.ICustomerService从ApiController解决问题中删除依赖性(但该接口已明确配置并在其他地方工作)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
我正在创建WCF web services自动化internet explorer.有多个Web服务调用需要访问同一个实例Internet Explorer.但是,由于WCF服务托管在IISWeb服务的所有调用都在会话0中执行.现在访问Internet ExplorerI use 的同一个实例,SHDocVw.InternetExplorer.HWND它返回Internet Explorer实例的窗口句柄.在下面的代码中,作为窗口WCF上IIS 7的服务执行句柄时,由于会话0隔离,总是返回0.此外,我无法挂钩到同一个IE实例或循环所有打开的IE窗口.我可以枚举进程列表并查找IE在会话0中打开的每个窗口的进程ID ,但不能转换System.Diagnostics.Process为SHDocVw.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#) 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 的等效项。
我正在使用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# ×9
xamarin.ios ×4
asp.net ×1
attributes ×1
background ×1
ios ×1
json ×1
localization ×1
mocking ×1
monodevelop ×1
sql ×1
unit-testing ×1
wcf ×1
xamarin ×1