小编Ole*_*ers的帖子

关于true ==的特别之处?

我目前不得不为同事做一些假期替换,并且必须改变他的一些代码.

我发现了很多条件

if (true == variablename) {...}
Run Code Online (Sandbox Code Playgroud)

我只是想知道这个语法有什么特别之处吗?像我们大多数人一样,我会写

if (variablename) {...}
Run Code Online (Sandbox Code Playgroud)

代替.令我恼火的是病情左侧的真实情况.它是否在右侧我会期望同事在布尔条件下没有进展.

是否有任何性能差异或类似的东西通过在开头真实?

c# syntax

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

使用 EF 和 WebApi 序列化父/子对象

我在实体框架中有以下模型:

public class Customer
{
[XmlIgnore]
public virtual ICollection<Customer> Children { get; set; }

public string Name { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

现在我尝试使用 web api 序列化它:

public class CustomerController:ApiController {
   public HttpResponseMessage GetAll()
   {
     using (var tc = new DataContext())
     {
        List<Customer> allCustomers = tc.Customers.ToList();
        return Request.CreateResponse(HttpStatusCode.OK, allCustomers);              
     }
   }
}
Run Code Online (Sandbox Code Playgroud)

当我这样做并使用 POST 调用该方法时,我收到以下错误:

“ObjectContent`1”类型无法序列化内容类型“application/json”的响应主体;字符集=utf-8

InnerException:“从‘System.Data.Entity.DynamicProxies.Customer’上的‘Children’获取值时出错”

InnerException(2):“ObjectContext 实例已被释放,不能再用于需要连接的操作。”

customer.Children 目前是一个空列表。

我猜这个问题的发生是因为 Children 与 Customer 属于同一类型,导致“无限序列化循环”。(我没有更好的词来形容)

我已经尝试过 XmlIgnore 来防止该属性被序列化,但没有效果。

c# serialization json entity-framework asp.net-web-api

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

如果声明不在cron工作

我有以下代码:(record.sh)

cd $(dirname $0)

dt=$(date '+%d/%m/%Y %H:%M:%S');
echo $dt;
read action < /home/nfs/sauger/web/pi/action.txt
echo $action;
if [[ $action == *"start"* ]]
then
  echo "start recording"
  ./gone.sh
  exit 1
elif [[ $action == *"stop"* ]]
then
 echo "stop recording"
  ./gone.sh
  exit 1
else 
#More stuff done here
fi
Run Code Online (Sandbox Code Playgroud)

当我手动运行此脚本时,输出如下:

19/01/2016 19:07:11
start
start recording
Run Code Online (Sandbox Code Playgroud)

如果通过(root)cronjob运行相同的脚本,则输出如下:

19/01/2016 19:07:01
start
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,文件"action.txt"已经被读取而没有问题(两次都记录了"start"),因此这不应该是权限或错误路径的问题.但是当作为cronjob运行时,不会调用if语句.没有"开始录制".

所以我的问题是:为什么if语句在我手动调用脚本时有效,而不是在通过cron完成时?

linux bash shell cron raspberry-pi2

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

使用msbuild创建wsp文件

当我右键单击一个共享点项目并选择“部署”时,将生成一个wsp文件。

我现在想自动化buildprocsses。我已经使用nant来调用MsBuild。这将构建我的csproj文件。

如何从中获取wsp文件?我读了一些有关ddf文件的文章,但在解决方案中看不到。

msbuild wsp sharepoint-2010

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

更改AssemblyVersion后,Webpart"未注册为安全"

我(成功)部署了一些sharepoint2010 - 使用msbuild的Webparts.一切正常,直到我决定改变assemblyVersion.每当我这样做的消息

Web部件错误:无法显示或导入此页面上的Web部件或Web窗体控件.无法找到类型RTContacts,RTContacts,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = 2721ba85ef1e4b88或未将其注册为安全.

一个解决方案是保持1.0.0.0,但应该有更好的方法......

也许有趣的是我们使用集中的AssemblyFile作为链接.

清单包含正确的assemblyversion:

<Assemblies>
<Assembly Location="RTContacts.dll" DeploymentTarget="GlobalAssemblyCache">
  <SafeControls>
    <SafeControl Assembly="RTContacts, Version=1.0.4325.18399, Culture=neutral, PublicKeyToken=2721ba85ef1e4b88" Namespace="RTContacts" TypeName="*" />
  </SafeControls>
</Assembly>
Run Code Online (Sandbox Code Playgroud)

当我再次将WebPart添加到该站点时,它会正确显示,但现有的webParts似乎链接到旧版本.

sharepoint web-parts sharepoint-2010

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

更优雅的方式来增加一个int-array?

我有一个具有多个值的int数组.我必须向该数组添加一个元素.我会这样解决:

int[] myIntArray=SomeMagicThere();

List<int> intList= myIntArray.ToList();
intList.Add(88);
myIntArray= intList.ToArray();
Run Code Online (Sandbox Code Playgroud)

(这很简单,我有理由不能改变myIntArray的类型)

你会以另一种方式解决它吗?做两个演员阵容感觉有点"脏"

c# arrays list

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

单行属性属性?

我得到以下代码:

[Column]
public int Id;
Run Code Online (Sandbox Code Playgroud)

当我删除并读取一个括号时,VS 2013会将其更改为:

[Column] public int Id;
Run Code Online (Sandbox Code Playgroud)

我不想要这个.这是ReSharper Added的全新安装.我不确定在哪里更改设置.

resharper formatting visual-studio-2013

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

为字符串数组添加新值的更好方法?

我有以下代码:

private void AddMissingValue(ref string[] someArray) {
  string mightbemissing="Another Value";
  if (!someArray.Contains(mightbemissing)) {
    var lst=someArray.ToList();
    lst.Add(mightbemissing);
    someArray=lst.ToArray();
  }
}
Run Code Online (Sandbox Code Playgroud)

虽然这有效(如果遗失的话,将一个项目添加到数组中),我想知道这是否可以以更智能的方式完成?我不喜欢将数组转换两次并为这么简单的任务编写这么多行.

有没有更好的办法?也许使用LinQ?

c# arrays

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

LinQ of Value in Value

我有以下词典:

public Dictionary<string,object> Items;
Run Code Online (Sandbox Code Playgroud)

现在我需要获取Dictionary-item 的Value来自特定类型的所有Items .(例如"int")

var intValues = Items.OfType<KeyValuePair<string,int>> 根本行不通.

没有LinQ的代码将是这样的:

var intValues=new Dictionary<string,int>()
foreach (var oldVal in Items) {
  if (oldVal.Value is int) {
    intValues.add(oldVal.Key, oldVal.Value);
  }
}
Run Code Online (Sandbox Code Playgroud)

(更新)我的例子应该显示基本的想法.但是如果可能的话,我会避免创建一个新的Dictionary作为结果.

c# linq

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

Azure Pipeline DevOps 中的条件默认值

我使用 Azure Pipelines 来构建我的解决方案。手动构建时,用户可以决定使用哪个构建配置。现在我希望默认值(以及自动触发时的值)根据分支而不同。这是我的(非工作)方法:

name:   PR-$(Build.SourceBranchName)-$(Date:yyyyMMdd)$(Rev:.r)
trigger:
  - develop
  - test 
  - master
pool:
  vmImage: 'windows-latest'
parameters:
- name: BuildConfiguration
  displayName: Build Configuration
  ${{ if eq(variables['Build.SourceBranch'], 'refs/heads/develop') }}:
  default: Debug
  ${{ if eq(variables['Build.SourceBranch'], 'refs/heads/test') }}:
  default: Release
  ${{ if eq(variables['Build.SourceBranch'], 'refs/heads/master') }}:
  default: Release
  values:
  - Debug
  - Release
Run Code Online (Sandbox Code Playgroud)

条件部分 ( ${{...}) 根本不起作用。(* "A template expression is not allowed in this context")

还有其他方法可以实现这一点吗?

azure-devops azure-pipelines azure-pipelines-yaml

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