我是try/do(或trier/doer)模式的粉丝,最好在C#中使用out参数实现,例如:
DateTime date;
if (DateTime.TryParse("2012-06-18", out date))
{
//Do something with date
}
Run Code Online (Sandbox Code Playgroud)
我正在开发一个Java 1.5项目,为此我正在使用一个名为TryResult的新类来实现try/do模式,该类是从实现try/do模式的任何方法返回的:
public class TryResult<ResultType> {
private boolean mSuccess = false;
private ResultType mResult = null;
public TryResult(boolean success, ResultType result) {
super();
this.mSuccess = success;
this.mResult = result;
}
public boolean isSuccess() {
return mSuccess;
}
public ResultType getResult() {
return mResult;
}
}
Run Code Online (Sandbox Code Playgroud)
这很好用,但我会将此代码移植到使用J2ME的不同平台,因此泛型不可用.
我目前的选择是从TryResult上面的类中删除泛型并使用普通的旧Object和铸造,或者为我最终使用的类型创建一个新类(例如StringTryResult).
有没有更好的方法在J2ME/Java 1.3上实现这种模式?
我正在使用管理SDK(即https://github.com/Azure/azure-sdk-for-net)自动创建Azure Web应用程序,并且如何使用更改Web应用程序应用程序服务计划定价层并不明显这个SDK.具体来说,我想将我正在创建的网络应用从"免费"更改为"共享".
我怎样才能做到这一点?
如果我有以下数组:
[1,1,1,2,2,1,1,1,1,2,2,3]
Run Code Online (Sandbox Code Playgroud)
Kotlin 中是否有任何内置方法可以过滤掉具有相同值的相邻元素,从而导致:
[1,2,1,2,3]
Run Code Online (Sandbox Code Playgroud)
保留顺序很重要。
PS 我的实际用例不是整数,它是一个实现 equals 的对象。
我正在为大多数表单使用自定义编辑器模板,但在尝试使用它们呈现自定义对象选择器时,我发现没有简单的方法将有关包含上下文的信息传递给编辑器模板.
具体来说,我的主窗体呈现域对象的编辑,编辑器模板需要呈现一个AJAX选择器,其中包含依赖于域对象ID的对象列表.我正在使用当前additionalViewData参数传递ID ,我认为这很容易出错,因此非常难看.
我的表单包含类似于以下内容的代码:
@Html.EditorFor(model => model.CategoryId, new { id = model.id })
Run Code Online (Sandbox Code Playgroud)
编辑器模板包含如下代码:
@{
var domainObjectId = ViewData["id"] as int?;
}
Run Code Online (Sandbox Code Playgroud)
我正在使用自定义ModelMetadataProvider选择对象选择器编辑器模板,并希望使用类似的技术将有关包含模型的信息传递给编辑器模板,但这似乎不可能.
所以,我的问题是:
ModelMetadataProvider将有关包含模型的信息传递给编辑器模板?additionalViewData参数传递每一条附加信息之外,还有更简洁/更容易的方法来实现我正在尝试的东西吗?提前致谢!
我正在尝试以编程方式构建一个使用C#7的项目,因此使用MSBuild 15,但是这个任务似乎因为不匹配的程序集引用而失败.
这是我的代码:
string projectFilePath = Path.Combine(args.Any() ? args.First() :@"C:\Users\newsoni\Documents\Visual Studio 2017\Projects\ConsoleApp2\ConsoleApp2.sln");
ProjectCollection pc = new ProjectCollection();
Dictionary<string, string> globalProperty = new Dictionary<string, string>();
globalProperty.Add("Configuration", "Debug");
globalProperty.Add("Platform", "x86");
BuildParameters bp = new BuildParameters(pc);
bp.Loggers = new ILogger[] { new Logger(), new ConsoleLogger(), };
BuildRequestData BuidlRequest = new BuildRequestData(projectFilePath, globalProperty, "4.0", new string[] { "Build" }, null);
BuildResult buildResult = BuildManager.DefaultBuildManager.Build(bp, BuidlRequest);
Run Code Online (Sandbox Code Playgroud)
这是错误消息:
C:\Users\newsoni\Documents\Visual Studio 2017\Projects\ConsoleApp2\ConsoleApp2.sln.metaproj : error MSB4127: The "Error" task could not be instantiated from the assembly "Microsoft.Build.Tasks.v4.0, Version=4.0.0.0, …Run Code Online (Sandbox Code Playgroud) 我在Visual Studio 2017中创建了一个全新的Web项目,但我不能在此Web项目中使用任何C#7功能.Visual Studio中未报告任何错误,但构建失败,并且输出窗口验证了这一点,该窗口显示CSC任务失败.
这是一个重现问题的项目.
https://drive.google.com/open?id=0B-mqMIMqm_XHQkxONjRLYzA3SUk
这是一个开箱即用的VS web项目,但HomeController.cs中添加了以下代码:
var i = 1_000_000;
Run Code Online (Sandbox Code Playgroud)
这使用_这是一个C#7功能.删除此行,构建成功.
使用C#7功能可以很好地编译非Web项目,并且我已经找到了用于Web项目的不同编译器的差异.非Web项目使用以下编译器:
C:\ Program Files(x86)\ Microsoft Visual Studio\2017\Enterprise\MSBuild\15.0\Bin\Roslyn\csc.exe
Web项目使用此编译器:
[解决方案根目录]\packages\Microsoft.Net.Compilers.1.3.2\build ..\tools\csc.exe
我该如何解决这个问题?
我正在开发 LINQ 提供程序,因此正在实现 IQueryable。
该接口中的属性的用途是什么Expression?我通常只是Expression.Constant(this)从我的实现中返回类似的东西,但不知道这是否不好。
奇怪的是,文档指出“这允许框架区分 LINQ 和 Entity SQL 查询”。
我正在尝试设置标记的大小,因为它被添加到地图中,基本上我希望标记增长.我看不到任何获得标记的实际视图的方法,所以我认为我不能使用标准的Android动画技术(例如ObjectAnimator).
我能看到这样做的唯一方法是实现我自己的动画并使用该setIcon方法来更改标记图标.
这样做还有其他更理想的方法吗?
我在Xamarin工作,但如果需要可以移植Java代码.
MongoDB C# 驱动程序是否支持像实体框架这样的查询拦截器?
我检查了文档但找不到任何内容。
基本上我需要做的是确保对数据库的某些查询(根据上下文)始终应用某些限制。
例如,如果我的文档可以被软删除,那么我总是需要确保为 { "SoftDeleted": false } 添加过滤器。实体框架通过查询拦截器优雅地处理这个问题。
我有一个应用程序在 GCP 中的 Ubuntu 实例上运行。该程序在端口 80 上打开服务器,因此必须以 root 身份运行。
我已成功设置 SSH 连接,但是当我尝试远程连接该进程时,出现错误:
无法附加到进程:.NET 调试器没有足够的权限来调试此进程
我尝试从 开始vsdbg,sudo .vs-debugger/vs2022/vsdbg但遇到了同样的错误。
我如何附加到这个过程?
我正在使用CommandLineParser,我想传递多个参数,这些参数最终应该在一个数组中。这是我的班级:
public class ClientConfig : Config
{
[Option("load")]
public string[]? Load { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
当我使用以下命令行时:
my.exe --load=1 --load=2 --load=3
Run Code Online (Sandbox Code Playgroud)
解析时我的“Load”属性应该如下["1", "2", "3"]:但是,当我尝试这样做时,出现以下异常:
System.InvalidOperationException:“序列不包含元素”
我怎样才能解决这个问题?
C#7有一个新功能,允许我们轻松定义元组,因此我们可以轻松使用包含多个值的结构.
有没有办法将元组用作泛型类型约束或类似?例如,我试图定义以下方法:
public void Write<T>(T value)
where T : (int x, int y)
{
}
Run Code Online (Sandbox Code Playgroud)
我意识到这个特定的例子是毫无意义的,但是我想象其他场景中有一个包含从另一个类型派生的类型的元组会很有用:
static void Main(string[] args)
{
var first = new Derived();
var second = new Derived();
var types = (t: first, u: second);
Write(types);
Console.ReadLine();
}
public static void Write((Base t, Base u) things)
{
Console.WriteLine($"t: {things.t}, u: {things.u}");
}
public class Base { }
public class Derived { }
Run Code Online (Sandbox Code Playgroud)
此示例不起作用,因为first它second是类型Derived.如果我制作它们的类型,Base这工作正常.