我是Objective C和iOS开发的初学者,但是13年的.NET资深人士.我很难在心理上绘制以下声明,这些声明来自Objective with Objective C指南:
void (^(^a)(void (^) (void))) (void) = ...
Run Code Online (Sandbox Code Playgroud)
它用作为什么应该typedef用来定义块的一个例子,但是我想要了解我正在寻找的内容,以便首先更好地理解块定义语法.
这是我到目前为止的图表:

我遇到问题的地方是我理解基本语法的方式:
[return_val] (^[block_name]) ([block_args]) = ...
Run Code Online (Sandbox Code Playgroud)
如果是这种情况,那么我所拥有的是一个返回void且没有参数但被命名的块(^a) (void (^) void).这意味着我的块的名称,而不是一个直的字符串,本身就是一个块.
显然我在这里遗漏了一些东西.有人可以对此有所了解吗?根据该网站,它简化为:
typedef void (^SimpleBlock) (void);
SimpleBlock (^complexBlock) (SimpleBlock) = ...
Run Code Online (Sandbox Code Playgroud)
我只是想念如何.
编辑:第三个空格应该在括号中.我修好了.它在图像中是错误的,但我不想为此重做整个图像.:)如果它原来是我的问题的来源,我会在这里修复它.
是否可以使用Newtonsoft JSON.NET库缩小/格式化JSON字符串而不强制系统重新解析代码?这就是我的方法:
public async Task<string> Minify(string json)
{
// TODO: Some way to do this without a re-parse?
var jsonObj = await JsonOpener.GetJsonFromString(json);
return jsonObj.ToString(Formatting.None);
}
public async Task<string> Beautify(string json)
{
// TODO: Some way to do this without a re-parse?
var jsonObj = await JsonOpener.GetJsonFromString(json);
return FormatJson(jsonObj);
}
private string FormatJson(JToken input)
{
// We could just do input.ToString(Formatting.Indented), but this allows us
// to take advantage of JsonTextWriter's formatting options.
using (var stringWriter = new StringWriter(new StringBuilder())) …Run Code Online (Sandbox Code Playgroud) 我正在调整一些视觉变化,并注意到当我尝试设置UIButton的背景颜色时,它只将颜色设置在实际按钮之外(不在按钮本身内)
UIButton* button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
button.frame = CGRectMake(6, 9, 50, 25);
[button setTitle:@"Select" forState:UIControlStateNormal];
button.backgroundColor = [UIColor redColor];
Run Code Online (Sandbox Code Playgroud)
是否存在允许我设置颜色的其他属性?
两个小时的搜索谷歌和Stackoverflow,我无处可去.这与代码隐藏无关,这就是我到目前为止没有运气的原因.
这是我的问题:我有一个运行IIS6的遗留网站,我需要在其上安装HTTPModule,以便为特定文件类型的任何请求添加一些处理.我编写了模块,将其复制到应用程序的/ bin目录,并将以下内容添加到我的Web.config中:
<system.web>
<httpModules>
<add name="YourModule" type="SecurityModule.SecurityModule" />
</httpModules>
</system.web>
Run Code Online (Sandbox Code Playgroud)
然后我启动网站并且......"/ MyApplication中的服务器错误".
以下是它给我的全部内容:
配置错误
描述:处理为此请求提供服务所需的配置文件时发生错误.请查看下面的具体错误详细信息并相应地修改配置文件.
分析器错误消息:无法加载类型'SecurityModule.SecurityModule'.(D:\ Websites\Reports\web.config第4行)
来源错误:
Line 2: <system.web>
Line 3: <httpModules>
-->Line 4: <add name="YourModule" type="SecurityModule.SecurityModule" />
Line 5: </httpModules>
Line 6: </system.web>
Run Code Online (Sandbox Code Playgroud)
源文件:D:\ Websites\Reports\web.config行:4
版本信息:Microsoft .NET Framework版本:2.0.50727.3625; ASP.NET版本:2.0.50727.3618
第4行,我添加了一个箭头,是红色的.就是这样!没有解释,没有提示去哪里.只是"无法加载类型".我尝试过各种各样的事情来解决这个问题:
谁能告诉我这里发生了什么?或者,如果失败了,有人能指出我的方向吗?在这一点上,任何方向都可以.:)我完全死路一条.
谢谢!
不知道这里发生了什么。
我正在努力从 tslint 迁移到 eslint。基本的迁移似乎进行得很顺利(嗯,“顺利”——显然需要制定一些规则),但我遇到过这个,我不知道如何克服它:
1:1 错误 未找到规则“@typescript-eslint/no-shadow”的定义@typescript-eslint/no-shadow
我已经像这样修改了 .eslintrc.js 文件(为简洁起见,剪掉了部分内容):
module.exports = {
"env": {
"browser": true,
"es6": true,
"node": true
},
"parser": "@typescript-eslint/parser",
"parserOptions": {
"project": "tsconfig.json",
"sourceType": "module"
},
"plugins": [
"eslint-plugin-import",
"@angular-eslint/eslint-plugin",
"@typescript-eslint",
"@typescript-eslint/tslint"
],
"rules": {
// Many unrelated plugins, all rules, none mentioning no-shadow
"no-shadow": "off",
"@typescript-eslint/no-shadow": ["error", { "hoist": "all" }],
// Many other unrelated plugins, all rules, none mentioning no-shadow. But I thought
// This next one may be helpful.
"@typescript-eslint/tslint/config": [ …Run Code Online (Sandbox Code Playgroud) 我正在给自己上数据结构和算法的进修课程(并学习新东西——我在大学主修信息系统而不是计算机科学,所以我没有接受这些方面的正规教育),而且我“一直在研究堆。我有点困惑。
我的理解是堆基本上是一棵半排序树,其中每个子节点的值都保证小于其父节点的值(假设本讨论为 MinHeaps)。那么,如果它是一棵树,为什么我见过的每个实现都在内部使用了类似数组的结构,而不是构建一组树节点?
我必须记住数组中 N 的子节点位于 2N + 1(左)和 2N + 2(右)* 处,这对我来说似乎很奇怪。为什么不直接构建一个具有 Left 和 Right 属性的节点并从那里开始呢?
*来源:本文
我们正在 Windows 8.1 中的 IE 上运行编码 UI 测试,并且我们通过 Visual Studio Team Services 进行测试。作为我们构建的一部分,我们运行了一个禁用弹出管理器的 Powershell 脚本。我们用来禁用它的代码是这样的:
Remove-ItemProperty "HKCU:\Software\Microsoft\Internet Explorer\New Windows" -Name "PopupMgr"
New-ItemProperty "HKCU:\Software\Microsoft\Internet Explorer\New Windows" -Name "PopupMgr" -Value 00000000 -PropertyType "DWord"
Run Code Online (Sandbox Code Playgroud)
当我在 Release Manager 中创建和部署构建时,运行它会生成以下错误:
运行命令停止,因为首选项变量“ErrorActionPreference”或公共参数设置为停止:找不到路径“HKCU:\Software\Microsoft\Internet Explorer\New Windows”,因为它不存在。
(强调我的)
我已经登录到 VM 并查看了注册表,并且HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\New Windows绝对存在。我唯一能想到的是它的值不是 DWORD 而是字符串——PopupMgr键的数据值为“是”而不是 1 或 0。但这与错误消息不匹配——错误说它甚至找不到键的路径,而不是值类型不匹配。另外,代码在插入新密钥之前删除了现有密钥,所以我什至不知道它是如何注意到不匹配的。
更奇怪的是,如果我在 VM 中打开 Powershell 并运行那两行(我复制并粘贴以避免输入错误),它们运行得很好。
这个脚本在 Windows 10 上运行得很好并且已经有一段时间了,所以我不确定这里发生了什么。用户是管理员组的成员,所以我认为这不是权限问题。
任何人都可以对此有所了解吗?
powershell internet-explorer azure-pipelines azure-pipelines-release-pipeline
尽管查看了多个 SO 帖子和我能想到的任何其他内容,但我在这里完全不知所措。
我的目标是制作一个非常非常简单的映射器。我基本上可以在某些单元测试中用作工具的东西。它不需要很复杂或任何东西——只需将一个对象的高级原始值和字符串值映射到另一个对象。所以基本算法是:
TFromTToTTo我们可以复制到的实例。from对象的值to对象上设置值问题是,无论我做什么,无论属性的类型是什么(int或者string,例如),我都会得到以下信息:
对象与目标类型不匹配。
这是我正在使用的代码:
public TTo Map<TFrom, TTo>(TFrom from)
{
if (from == null) return default;
var fromProps = GetProperties(typeof(TFrom));
var toProps = GetProperties(typeof(TTo));
// Props that can be mapped from one to the other
var propsToCopy = fromProps.Intersect(toProps, new PropertyComparer()).ToList();
var returnObject = (TTo)Activator.CreateInstance(typeof(TTo));
foreach (var prop in propsToCopy)
{
// Copy the values
var …Run Code Online (Sandbox Code Playgroud) 我想在Silverlight中选择树视图项时阻止自动水平滚动.我正在尝试在基类中完成它.
到目前为止,我还没有能够管理它.我已经尝试了下面的代码,但是它会执行,然后当我选择它时,事情就会滚动.
using System.Windows;
using System.Windows.Controls;
namespace MyControls
{
public class CustomTreeView : TreeView
{
private ScrollViewer _scrollViewer;
protected override void OnSelectedItemChanged(RoutedPropertyChangedEventArgs<object> e)
{
base.OnSelectedItemChanged(e);
_scrollViewer.ScrollToHorizontalOffset(0);
}
public override void OnApplyTemplate()
{
base.OnApplyTemplate();
_scrollViewer = GetTemplateChild("ScrollViewer") as ScrollViewer;
}
}
}
Run Code Online (Sandbox Code Playgroud)
我实际上并不想完全禁用滚动 - 如果项目飞离树视图的边缘,我希望用户能够滚动到它.我想要做的是当我选择一个可能长于屏幕宽度的子节点时,将树保持在原来的位置.
我在WrapPanel上尝试了RequestBringIntoView,但这似乎只是WPF.我也试过在UpdateLayout和SelectedItemChanged上做这个.一切都无济于事.我似乎无法找到一个通用的解决方案,我可以让另一个类继承并使用.
有人有主意吗?
谢谢!
-Ari
编辑:赏金说明我需要能够在XAML中完成它.那是我的错字.我也将采用代码解决方案.谢谢!
我将控件绑定到DelegateCommand,并且它的CanExecute部分无法正常工作.我正在使用Prism库.谁能告诉我为什么?
命令声明和实例化:
public PlayerManagementViewModel(DatabaseManager dbManager)
{
_dbManager = dbManager;
this.ResetUpToDateStatusCommand = new DelegateCommand(() => this.ResetXpUpToDateStatus());
this.DeletePlayerCommand = new DelegateCommand(() => this.DeleteSelectedPlayer(), () => SelectedPlayer != null);
this.RefreshPlayers();
}
public ICommand DeletePlayerCommand { get; private set; }
Run Code Online (Sandbox Code Playgroud)
SelectedPlayer定义:
public Player SelectedPlayer
{
get { return _selectedPlayer; }
set
{
SetProperty(ref this._selectedPlayer, value);
this.OnPropertyChanged(() => this.FormattedPlayerStatus);
}
}
Run Code Online (Sandbox Code Playgroud)
奇怪的是,如果你看一下DeletePlayerCommand实例化之上的那一行,那条线就可以了.我没有得到任何CanExecute行为,但至少它是有效的.原样,则DeletePlayerCommand命令永远不会触发关断,即使有断点,除非删除了构造的CanExecute部分完全.
任何人都可以向我解释为什么这是或我做错了什么?
我来自C#背景,这是我第一次尝试Powershell。我正在尝试编写一个Powershell脚本,该脚本在Azure中完成很多工作,其中包括:
New-AzureRmSqlServer)(如果没有)我的第一个问题是,如果服务器已经存在,则不需要创建它;我可以直接去创建数据库。但是,我似乎无法完成这项工作。
我试过了Get-AzureRmSqlServer,但是如果找不到我要的服务器,就会出错。最后,我使用此函数返回$true是否找到$false:
function Check-For-Server
{
Param(
[Parameter(Mandatory=$true)]
[String]
$ServerName
)
if (Test-AzureName -Name $ServerName)
{
return $false
}
else
{
return $true
}
}
Run Code Online (Sandbox Code Playgroud)
问题出在这里:我遇到以下错误:
Test-AzureName:无法使用指定的命名参数来解析参数集。
在C:\ src \ Powershell \ test.ps1:10 char:9
+ if(Test-AzureName -Name $ ServerName)
+ ~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~
+ CategoryInfo:InvalidArgument:(:) [Test-AzureName],ParameterBindingException
+ FullyQualifiedErrorId:AmbiguousParameterSet,Microsoft.WindowsAzure.Commands.CloudService.TestAzureNameCommand
有谁知道如何解决这个问题?Google绝对没有帮助,至少Test-AzureName就此特定错误消息而言。我曾想尝试其中一种-Service/ServiceBusName/Storage/Website论点,但不确定哪一种适用于此。或者甚至是相关的-错误消息似乎并不表示我实际上缺少了一个参数,只是我提供的那个参数某种程度上是错误的。
哦,如果有帮助,请致电Check-For-Server:
$sqlServerName = "test_db_server"
Check-For-Server -ServerName $sqlServerName
Run Code Online (Sandbox Code Playgroud)
谢谢!
假设我有一个包含 10,000 个对象的集合,需要使用实体框架将其添加到数据库中(我认识到 EF 不太适合此任务,但现在让我们运行它)。出于本问题的目的,我们将做出以下假设:
IDENTITY主键。我可以通过以下两种方式之一在实体框架中执行此操作:
// Option 1
foreach (var item in largeCollection)
{
_context.SomeTable.Add(item);
}
_context.SaveChanges();
// Option 2
_context.SomeTable.AddOrUpdate(largeCollection);
_context.SaveChanges();
Run Code Online (Sandbox Code Playgroud)
一种方法的性能本质上比另一种方法更好还是更差?或者它们都转化为相同数量的单行INSERT语句?
换句话说,从性能的角度来看,在将多个项目插入数据库时使用Add()over AddOrUpdate()(或反之亦然)是否有任何优势?
我已经看到了一些类似于这个的问题,但是他们都没有问过我想要的东西.基本上,给定一个字符串,我想通过反射得到该字符串的值.
我知道这听起来很奇怪,但我正在编写一个通用的方法来转储对象的所有公共属性,而string是一个特例,因为它的值与它所组成的连接字符数组真的相同.
所以,我的代码是这样的:
var obj = "foo";
var props = obj.GetType().GetProperties();
// I now have two properties -- length and a character array
foreach (var prop in props)
{
if (prop.PropertyType.IsArray || prop.GetIndexParameters().Length > 0)
{
lines.Add(tabs + prop.Name + "(array)");
lines.Add(tabs + "\t" + prop.GetValue(target, new object[] { 0 }));
}
else
Console.WriteLine(prop.Name + ": " + prop.GetValue(obj, null));
}
Run Code Online (Sandbox Code Playgroud)
这输出如下:
Chars(array)
f
Length: 3
Run Code Online (Sandbox Code Playgroud)
这一切都很好,但有没有一种方法可以从中获得实际的"foo"值而不需要通过数组并连接它?
谢谢!
-Ari
c# ×5
powershell ×2
reflection ×2
algorithm ×1
asp.net ×1
azure ×1
azure-pipelines-release-pipeline ×1
httpmodule ×1
iis-6 ×1
ios ×1
iphone ×1
json ×1
json.net ×1
mapping ×1
mvvm ×1
objective-c ×1
prism ×1
silverlight ×1
sql-server ×1
string ×1
uibutton ×1
wpf ×1