小编Dan*_*rth的帖子

动态关键字,C#和Interop?

好的,我正在调用一个我无法访问的互操作DLL.这是伪代码:

dynamic myVariable = null;

firstInteropMethod(ref myVariable);
secondInteropMethod(myVariable); //Not by ref
Run Code Online (Sandbox Code Playgroud)

两种方法的方法签名是

firstInteropMethod(ref object someObject);
secondInteropMethod(object someObject);
Run Code Online (Sandbox Code Playgroud)

期望值是定义的双数组

double[,]
Run Code Online (Sandbox Code Playgroud)

现在有趣的部分.我的原始代码获得了错误的结果,但没有错误.但是,这段代码:

firstInteropMethod(ref myVariable);
secondInteropMethod((double[,]) myVariable);
Run Code Online (Sandbox Code Playgroud)

给出预期的结果.

使用手表和语句类型我已经确定两个调用之间没有任何变化,那么给出了什么?为什么会有差异,这会有什么区别?

c# interop dynamic

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

ContentControl中的GroupBox - 支持由绑定到ContentControl的内容实现的IDataErrorInfo

我有一个表示多个选项和实现的ViewModel IDataErrorInfo.此ViewModel仅在选择了至少其中一个选项时才有效.它必然是一个ContentControl.A DataTemplate用于将ViewModel可视化为GroupBox包含ItemsControl.另一个DataTemplate将每个选项可视化为CheckBox.

在选中或取消选中复选框时,我需要做什么,ContentControl一起完成工作IDataErrorInfo并检查有效性?


一些代码:

捆绑:

<ContentControl Content="{Binding GeneralInvoiceTypes, ValidatesOnDataErrors=True}"
                Margin="0,0,5,0" />
Run Code Online (Sandbox Code Playgroud)

数据模板:

<DataTemplate DataType="{x:Type ViewModels:MultipleOptionsViewModel}">
  <GroupBox Header="{Binding Title}">
    <ItemsControl ItemsSource="{Binding Options}" />
  </GroupBox>
</DataTemplate>
<DataTemplate DataType="{x:Type ViewModels:OptionViewModel}">
  <CheckBox IsChecked="{Binding IsChecked}"
            Content="{Binding Name}"
            Margin="6,3,3,0" />
</DataTemplate>
Run Code Online (Sandbox Code Playgroud)

样式:

<Style TargetType="{x:Type ContentControl}">
  <Style.Triggers>
    <Trigger Property="Validation.HasError"
             Value="true">
      <Setter Property="ToolTip"
              Value="{Binding RelativeSource={x:Static RelativeSource.Self}, Path=(Validation.Errors)[0].ErrorContent}" />
    </Trigger>
  </Style.Triggers>
  <Setter Property="Validation.ErrorTemplate">
    <Setter.Value>
      <ControlTemplate>
        <Grid>
          <Grid.ColumnDefinitions>
            <ColumnDefinition Width="90*" />
            <ColumnDefinition Width="20" …
Run Code Online (Sandbox Code Playgroud)

.net c# validation wpf

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

继承和ASP.NET Web API的JSON格式化程序

想象一下简单的控制器动作IEnumerable<BaseType> Get().它返回所有派生自BaseType的不同类型的枚举.

当客户端请求XML时,结果如下:

<ArrayOfBaseType>
    <BaseType i:type="DerivedType1"><A>value</A></BaseType>
    <BaseType i:type="DerivedType2"><B>value</B></BaseType>
    <BaseType i:type="DerivedType3"><C>value</C></BaseType>
</ArrayOfBaseType>
Run Code Online (Sandbox Code Playgroud)

如您所见,派生类的类型在i:type属性中传输.

但是,如果客户端请求JSON,则缺少此信息:

[
  {"A":"value"},
  {"B":"value"},
  {"C":"value"}
]
Run Code Online (Sandbox Code Playgroud)

如何解决这个问题?

.net asp.net rest web-services asp.net-web-api

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

filter-branch --index-filter总是失败"致命:坏源"

所以,我正在尝试使用我的存储库重命名文件夹git filter-branch --index-filter,但我总是以"致命:错误的来源"错误结束.

使用文件而不是文件夹在测试存储库中可以轻松演示此问题.

制备:

$ git init
$ echo whatever >> my_file.txt
$ git add .
$ git commit -m "initial"
$ echo whatever2 >> my_file2.txt
$ git add .
$ git commit -m "second"
Run Code Online (Sandbox Code Playgroud)

现在,我想my_file.txt改为your_file.txt:

$ git filter-branch --index-filter 'git mv my_file.txt your_file.txt' HEAD
Run Code Online (Sandbox Code Playgroud)

但它不起作用:

Rewrite dac9a2023bdf9dd0159fab46213d9e1342ae9f75 (1/2)fatal: bad source, source=my_file.txt, destination=your_file.txt
index filter failed: git mv my_file.txt your_file.txt
Run Code Online (Sandbox Code Playgroud)

但是,git mv执行的相同命令通常可以正常工作:

$ git mv my_file.txt your_file.txt
$ git status
# …
Run Code Online (Sandbox Code Playgroud)

git

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

在PowerPoint直方图图表中更改图表标题的文本颜色

我试图在PowerPoint中更改直方图的图表标题的文本颜色.
这是我做的:

var colorFormat = chart.ChartTitle.Format.TextFrame2.TextRange.Font.Fill.ForeColor;
colorFormat.RGB = ...;
// or
colorFormat.ObjectThemeColor = ...;
Run Code Online (Sandbox Code Playgroud)

这适用于标准图表,如折线图.但它不适用于直方图,瀑布,树图等其他图表类型.

在这些情况下,设置ObjectThemeColor将文本设置为黑色.设置RGB实际上设置了正确的颜色.但是,在这两种情况下,只要用户更改选择,文本颜色就会跳回到之前的颜色.

如何设置其中一个图表标题的文字颜色?
我正在使用VSTO和C#,但VBA解决方案同样受欢迎,只要它可以转换为C#并仍然有效.

powerpoint vba vsto office-interop powerpoint-vba

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

Git to svn:为日志消息添加提交日期

当"dcommitting"到svn时,我该如何将作者(或提交者)名称/日期添加到日志消息中?

例如,如果Git中的日志消息是:

This is a nice modif

我希望svn中的消息是这样的:

This is a nice modif
-----
Author: John Doo <John.Doo@company.com>  2010-06-10 12:38:22
Committer: Nice Guy <nguy@acme.org>  2010-06-10 14:05:42

(请注意,我主要对日期感兴趣,因为我已经在.svn-authors中映射了svn用户)

任何简单的方法?胡克需要吗?其他建议?
(另见:http://article.gmane.org/gmane.comp.version-control.git/148861)

svn git message date git-svn

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

C#比较两个列表,返回列表2中的新项目

这可能是一个常见的问题,我在没有找到有效的解决方案的情况下搜索了其他问题(注意,我在C#和linq方面的技能是有限的 - 所以一个简单的解决方案将不胜感激!).

这是问题:

我有两个对象列表.我想比较它们并返回list2中的所有NEW对象.

例:

ObjectList List1; //包含存储在数据库中的3个对象

ObjectList List2; //包含与List1中相同的3个对象和从网页添加的新对象(父对象已在网页上更新)

ObjectList List3; //应该对List1和List2进行比较,并返回List2中的NEW对象(因此结果应该只是对象编号4)

注意:

  • 订单无关紧要.我只想要新对象
  • 通常,对象仅添加到List2.如果删除了任何对象(与List1相比),则应忽略此对象.(所以只存在于List1中的对象不感兴趣)

感谢您在我的搜索中遗漏的任何建议或链接

编辑

这是一个使用Except进行首次尝试的小例子(返回错误)

我把它缩短了一点.该方法来自我们的软件,因此很可能不为您所知.对于那个很抱歉.

 // caDialogObjects = List1 (caDialogQLMLinks is the link to the objects)
RepositoryObjectList caDialogObjects = args.Object.GetConfiguration().GetObjectSet(caDialogQLMLinks);

// caObjectObjects = List2 (caObjectQLMLinks is the link to the objects)
RepositoryObjectList caObjectObjects = args.Object.GetConfiguration().GetObjectSet(caObjectQLMLinks);

// List 3
RepositoryObjectList caTotal;
caTotal = caObjectObjects.Except(caDialogObjects);
Run Code Online (Sandbox Code Playgroud)

有效的解决方案 由于列表只是一个引用(不是值),因此Exception不起作用.可以使用第二个参数,但我得到了一个有效的linq代码:

RepositoryObjectList caNewCA = 
    new RepositoryObjectList(caDialogObjects.Where(item1 => 
         !caObjectObjects.Any(item2 => item1.Id == item2.Id)));
Run Code Online (Sandbox Code Playgroud)

c# compare list

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

图表控制.如何删除图例标签

我从这个网站得到了一个简单的代码:

http://www.davidhayden.com/blog/dave/archive/2008/12/02/PieChartASPNETWebsitesUsingNewMicrosoftChartControls.aspx

现在,我想删除饼图中的所有标签,即"a","b","c","d".

我试着这样做:

Chart1.Series[0].IsValueShownAsLabel = false;
Run Code Online (Sandbox Code Playgroud)

但它不起作用..请帮助.我被困了

c# asp.net charts

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

架构验证在验证之前不会修剪字符串

在自动格式化后,我在验证XML文件时遇到问题.在验证字符串之前,验证不会修剪字符串.这是.NET的XML验证实现中的错误还是这种可接受的行为?如果它是被接受的行为,那么通常如何处理这样的情况,因为在我看来,这两个XML文件是等价的.

我的XSD:

<xs:schema ...>
  ...
  <xs:simpleType name="ItemTypeData">
    <xs:restriction base="xs:string">
      <xs:enumeration value="ItemA" />
    </xs:restriction>
  </xs:simpleType>
</xs:schema>
Run Code Online (Sandbox Code Playgroud)

格式化之前的我的XML(验证通过):

...
<ItemType>ItemA</ItemType>
...
Run Code Online (Sandbox Code Playgroud)

格式化后(验证失败):

...
<ItemType>
  ItemA
</ItemType>
...
Run Code Online (Sandbox Code Playgroud)

.net c# xml xsd xml-validation

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

CodeContracts:错误警告"可能取消装箱空引用"

在此输入图像描述

在上图中,您可以看到代码合同中的警告.我不认为这是合法的,this永远不会null.

这是一个错误还是我错过了什么?


此属性是以下类的成员:

public class NHibernateIQueryableQueryBase<TEntity, TQuery, TQueryInterface>
    : IQuery<TEntity>, IFluentQueryInterface<TEntity, TQueryInterface>
    where TQuery : NHibernateIQueryableQueryBase<TEntity, TQuery,
                                                 TQueryInterface>,
                   TQueryInterface
    where TQueryInterface : IQuery<TEntity>
Run Code Online (Sandbox Code Playgroud)

更新:
将属性更改为以下内容仍显示警告 - 在线return result;:

public TQueryInterface And
{
    get
    {
        var result = this as TQuery;
        return result;
    }
}
Run Code Online (Sandbox Code Playgroud)

.net c# code-contracts

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