小编Kon*_*ten的帖子

添加到一个可变类型,好像它是不可变的(无序)

我在表单上构建一个对象:

return table.Rows.Cast<DataRow>()
  .Select(row => new Something
  {
    Field = row["field1"] as int?,
    Bunch = GetBunch(index)
  });
Run Code Online (Sandbox Code Playgroud)

使用GetBunch()如下.

private IList GetBunch(int index) { ... }
Run Code Online (Sandbox Code Playgroud)

它的工作原理应该如此.现在,我们已经注意到我们需要在我们放入Bunch的数组中添加一个额外的元素.由于一系列原因,不能更改方法的签名,也不可能在其中添加额外元素.

我试着像这样添加额外的东西:

return table.Rows.Cast<DataRow>()
  .Select(row => new Something
  {
    Field = row["field1"] as int?,
    Bunch = GetBunch(index).Add(new Thingy() { ... })
  });
Run Code Online (Sandbox Code Playgroud)

但它不起作用,因为Add()不返回包含新元素的原始数组.它返回一个int.如果原始对象是不可变的,Add()的结果将是我想要的,但显然,它不是.

是否有可能使可变对象不稳定?如果没有(因为我相当肯定不是),我怎么能轻易处理?(很容易=没有存储创建的东西,然后访问它并向Bunch属性的数组添加一个元素.)

注意,在这种情况下,结果的顺序并不重要.适当的类型将是某种类型的袋子,但我是由现有的设计手工绑定.

c# arrays immutability

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

尽管有业务规则,字段仍未隐藏

这个帖子中,我验证了正确完成了从复合字段中隐藏某些单个字段的正确方法.其他来源似乎也证实了这一点.但是,尽管规则定义如下:

在此输入图像描述

我仍然会在帐户表单上显示愚蠢的字段.它看起来如下图所示,是我磨牙的高级烦恼和原因.我错过了什么?(是的,我确实激活了规则并重新加载了表单.)

在此输入图像描述

dynamics-crm-2013

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

如何使扩展器控件悬停在下一个元素上?

在我下面举例说明的设置中,直到最近我才注意到当扩展器中列出的元素列表增长时(使其长度超过其旁边面板中按钮的长度),它不会悬停正如直观预期的那样,在数据网格上。相反,它将它向下推,这使得整个 GUI 看起来垂直跳跃。

<StackPanel>
  <StackPanel Orientation="Horizontal">
    <StackPanel>
      <Expander>...</Expander>
    </StackPanel>
    <StackPanel>
      <Button ... /><Button ... /><Button ... />
    </StackPanel>
  </StackPanel>
  <StackPanel Orientation="Horizontal">
    <DataGrid ... />
  </StackPanel>
</StackPanel>
Run Code Online (Sandbox Code Playgroud)

解决此问题的一种方法是将所有内容放在网格中的同一个单元格中,最后添加扩展器。然而,在我看来,这在几个层面上都是不合适的。相反,我更愿意强制扩展器在其他控件上方无接触地扩展。它应该影响布局,但仅影响其折叠状态的大小。扩展不应该影响布局。

我怎么能告诉愚蠢的扩张者不要那么咄咄逼人?

c# wpf layout xaml expander

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

不建议使用成员变量

根据MSDN,由于线程和缓存,不建议使用成员变量.请注意,这个问题涉及多个领域,虽然我确信它主要与.NET/C#相关,但它可能会特定于CRM.它可能不会,但单挑可能是明智的.

虽然我已经牢牢掌握了可能出现的问题,但我并不完全确定我理解超出警告限制的确切和准确的情况.我关注的确切报价如下.

为了提高性能,Microsoft Dynamics CRM缓存插件实例.应该将插件的Execute方法编写为无状态,因为每次调用插件时都不会调用构造函数.此外,多个系统线程可以同时执行插件.所有每个调用状态信息都存储在上下文中,因此您不应使用全局变量或尝试将任何数据存储在成员变量中,以便在下一个插件调用期间使用,除非该数据是从提供给构造函数的配置参数中获取的.对插件注册的更改将导致插件重新初始化.

我的课程遵循以下原则.

public partial class Blopp : IPlugin
{
  private IPluginExecutionContext Context { get; set; }
  private Entity Target { get; set; }
  private IOrganizationService Service { get; set; }
  ...

  public Blopp() : this(String.Empty) { }
  public Blopp(String a) : this(a, String.Empty) { }
  public Blopp(String a, String b) { ... }

  public void Execute(IServiceProvider serviceProvider)
  {
    try
    {
      Assign(serviceProvider);
      DoStuff();
    }
    catch (Exception) { }
    finally …
Run Code Online (Sandbox Code Playgroud)

.net c#

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

如何从 ICollection&lt;T&gt; 中选择 IEnumerable&lt;T&gt; 而不是 List&lt;T&gt;?

我有以下几行按预期工作。

Dictionary<Guid, List<T>> dictionary = source.ToDictionary(
  element => element.Id,
  element => element.Ts.ToList());
Run Code Online (Sandbox Code Playgroud)

但是,我希望第一行使用IEnumerable,这会产生类型不匹配的错误。

Dictionary<Guid, IEnumerable<T>> dictionary = source.ToDictionary( ... );
Run Code Online (Sandbox Code Playgroud)

使用ToArray而不是ToList对我没有帮助(得到同样的错误,而且我已经学会了不要在 C# 中使用数组,除非确实需要)并且据我所知,Ts的类型是ICollection

是否可以按照我希望的方式转换整个 Shabang,而无需使用硬核和使用铸造?

c# linq collections

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

什么是Entity Framework的最新版本?

根据网上的内容,它是6.1.2,但根据我从同事那里获得的文件中的版本号,它比这更高.

EF由Microsoft提供,因此MSDN应该是正确的检查位置.不是吗?

请注意,我不是在谈论Azurific预览版本7.我正在谈论版本6但是后来的颠覆.我们信任谁?

msdn entity-framework version

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

方法不返回值

我有一个方法应该返回label.text中当前用户的域名.我在表单的load事件中调用该方法但没有出现,代码中也没有错误.也许我启动对象错了?如果我直接将方法代码放在load事件中,它就可以工作.

public partial class Main Form
{
  public Main()
  {
    InitializeComponent();
  }

  public string getCurrentDomain()
  {
    return domainNameValue.Text = Environment.UserDomainName;
  }

  public void Main_Load(object sender, EventArgs e)
  {
    Main main = new Main();
    main.getCurrentDomain();
  }
}
Run Code Online (Sandbox Code Playgroud)

.net c# winforms

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

如何防止NServiceBus回滚事务或其中的部分内容?

我们有一个处理程序,它在收到消息时执行.该过程中有几个步骤,每个步骤都创建自己的新上下文,如下所示.

public void Handle(SomeMessage message)
{
  ...
  try
  {
    ...
    using(DataContext context = new DataContext()) { ... }
    ...
    using(DataContext context = new DataContext()) { ... }
    ...
  }
  catch (Exception exception)
  { 
    ...
    using(DataContext context = new DataContext()) { ... }
    ...
  }
}
Run Code Online (Sandbox Code Playgroud)

但是,有时会抛出异常并将其捕获.当前事务被回滚(并且由于它没有明确地实现,我假设,不完全确定,它是由NServiceBus本身完成的,因为写入数据库的所有结果都消失了,包括catch语句中的结果) .

目前,我正在通过写一个文件来解决它,当一些可怕的事情发生但我也喜欢将它存储在数据库中.

所以,最终,我想防止最后一个操作,即catch语句中的操作被回滚.可以这样做,如果是这样的话怎么样?

c# entity-framework msmq transactions nservicebus

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

如何欺骗性更新标识栏?

在表中,每次添加行时都会有一个标识列递增1(最低值为1).现在,有一个新的要求 - 我们需要实现软删除.

所以,我的想法是基本上将任何轻微删除的行乘以-1.这确保了唯一性,并清楚地在活动和轻微删除的项目之间划了一条线.

update Things set Id = -101
where Id = 101
Run Code Online (Sandbox Code Playgroud)

你知道吗,这台愚蠢的电脑让我不这么做.建议的解决方法是:

  1. 列交替
  2. 执行更新
  3. 交替回到专栏

对我来说,这似乎是一个Q&D.但是,我能看到的唯一选择是添加一个带有删除状态的新列.

我正在使用EF来执行额外的工作,当我更改身份的值并存储它时,软件非常友好地为我思考并实际创建一个新行(具有增量设置的身份,既不是原始的,也不是消极的).

我该如何解决这个问题?

c# sql identity entity-framework

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

无法获得活动的垂直滚动条

我已经阅读了很多关于这个问题的帖子,但是我不能在我的要求使它正常工作。我的数字可能会出现逻辑故障,或者我错过了一些关键细节,但我看不到。

我得到的是一个滚动条,但它似乎没有激活。我的猜测是,由于存在标记,网格将整体呈现,从而使滚动画面变得不必要。我如何才能感到别样?

我希望创建一个显示较长数据网格的窗口,该网格是:

  1. 固定高度
  2. 使内容符合宽度
  3. 无法调整大小

XAML

<Window ...
        SizeToContent="Width"
        Height="600"
        ResizeMode="NoResize">
  <StackPanel>
    <StackPanel Orientation="Horizontal">
      <Button Content="Aaa" Click="Aaa_OnClick" />
      <Button Content="Bbb" Click="Bbb_OnClick" />
    </StackPanel>
    <DataGrid ItemsSource="{Binding Things}"
              VerticalScrollBarVisibility="Visible"
              AutoGenerateColumns="False">
      <DataGrid.Columns>
          <DataGridTextColumn Header="Id"
                              Width="30"
                              Binding="{Binding Path=Id}" />
          <DataGridTextColumn Header="Name"
                              Width="150"
                              Binding="{Binding Path=Name}" />
        </DataGrid.Columns>
      </DataGrid>
  </StackPanel>
</Window>
Run Code Online (Sandbox Code Playgroud)

我想念什么?

wpf xaml datagrid scrollbar

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