小编Max*_*Max的帖子

如何避免手动实现INotifyPropertyChanged

有没有办法避免这种情况.我有很多绑定到DataGridViews的类,它们只是带有默认getter和setter的简单属性集合.所以这些类非常简单.现在我需要为它们实现INotifyPropertyChanged接口,这将增加很多代码量.是否有任何类可以继承以避免编写所有这些无聊的代码?我认为我可以从某个类继承我的类,并用一些属性装饰属性,它会发挥魔力.那可能吗?

我很清楚面向方面编程,但我更倾向于以面向对象的方式.

c# data-binding collections winforms

8
推荐指数
2
解决办法
1397
查看次数

具有CheckBox单元格问题的DataGridView

我有一个带有DataGridViewCheckBoxColumn列的DataGridView,它被数据绑定到一个列表.问题是此复选框的数据绑定布尔属性不是在选中/取消选中复选框时更新,而是在CellLeave事件之后,换句话说在单元格失去焦点之后更新.我希望在检查/取消选中后立即更新此属性.有一个事件CurrentCellDirtyStateChanged在检查/取消选中后立即触发,因此我可以使用它来手动更新该属性.有一个更好的方法吗?

c# data-binding winforms

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

Microsoft Enterprise Library替代方案

Microsoft Enterprise Library有一些有争议的反馈.一些开发人员喜欢它,有人说它是过度设计的.有什么替代品吗?免费和商业.

.net enterprise-library

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

实体框架从v1转换为v4问题

将我的数据访问层项目从EntityFramework v1转换为v4后,每个实体类都会出现一堆错误:

错误10016:解析项'EntityTypeShape'时出错.异常消息是:'未解析的引用'NS.EntityName1'.'.DataAccessLayer\Model.edmx

错误10016:解析项"AssociationConnector"时出错.异常消息是:'NS.EntityName1'.'.DataAccessLayer\Model.edmx

有谁知道这是什么以及如何解决它?

.net entity-framework data-access-layer

7
推荐指数
2
解决办法
1461
查看次数

检查[]运算符

如何在Python中检查对象是否支持[]操作?我想到类似以下内容:

if supports(obj, ?[]?):
    print("Supports")  
Run Code Online (Sandbox Code Playgroud)

python

7
推荐指数
2
解决办法
1646
查看次数

强制foreach使用const迭代器

我有一个实现cbegin()cend()功能的自定义容器类.然后我在foreach循环中使用它,但它似乎需要begin()end()成员函数,即使我尝试使用const修饰符:

for (const auto val: container)
Run Code Online (Sandbox Code Playgroud)

和这样:

for (auto const val: container)
Run Code Online (Sandbox Code Playgroud)

和这样:

for (const auto const val: container)
Run Code Online (Sandbox Code Playgroud)

是否有可能强迫foreach使用常数c函数?

c++ containers iterator c++11

7
推荐指数
2
解决办法
1548
查看次数

在Delphi中初始化数组的更快方法

我试图在我的Delphi应用程序中挤压每一点性能,现在我开始使用一个与动态数组一起工作的程序.最慢的一行是

SetLength(结果,Len);

用于初始化动态数组.当我查看SetLength过程的代码时,我发现它远非最佳.呼叫顺序如下:

_DynArraySetLength - > DynArraySetLength

DynArraySetLength获取数组长度(初始化为零),然后使用ReallocMem,这对于启动也是不必要的.

我一直在做SetLength来初始化动态数组.也许我错过了什么?有更快的方法吗?

编辑:描述主算法将占用大量空间,实际上是不必要的,因为它试图优化它的一小部分.一般而言,它是车辆路径问题的证明(http://en.wikipedia.org/wiki/Vehicle_routing_problem).我确实需要数以万计的分配,因为我必须保留所有数据,并将其分开保存.Probalby如果我能想到一些聪明的数据结构会有所帮助,但我能想到的任何东西都会大大增加代码的复杂性.基本上我已经在算法级别上做了我所能做的一切,所以现在我正试图从低级别的东西中获得我能做的一切.所以这是一个相当狭隘的问题:是否有可能增加这个特定的电话.我认为要做到这一点,我需要根据SetLength代码编写自己的初始化函数.并使其内联.

delphi performance

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

定位器离开图形区域

当我运行以下代码时

pMin = {-3, -3};
pMax = {3, 3};
range = {pMin, pMax};
Manipulate[
 GraphicsGrid[
  {
   {Graphics[Locator[p], PlotRange -> range]},
   {Graphics[Line[{{0, 0}, p}]]}
   }, Frame -> All
  ],
 {{p, {1, 1}}, Locator}
]
Run Code Online (Sandbox Code Playgroud)

Mathematica图形

我希望Locator控件在第一个Graph的范围内,但它可以在整个GraphicsGrid区域内移动.我的代码中有错误吗?

我也试过了

{{p, {1, 1}}, pMin, pMax, Locator}
Run Code Online (Sandbox Code Playgroud)

代替

{{p, {1, 1}}, Locator}
Run Code Online (Sandbox Code Playgroud)

但它表现完全错误.

UPDATE

感谢大家,这是我的最终解决方案:

Manipulate[
 distr1 = BinormalDistribution[p1, {1, 1}, \[Rho]1];
 distr2 = BinormalDistribution[p2, {1, 1}, \[Rho]2];
 Grid[
  {
   {Graphics[{Locator[p1], Locator[p2]}, 
     PlotRange -> {{-5, 5}, {-5, 5}}]},
   {Plot3D[{PDF[distr1, {x, y}], PDF[distr2, {x, y}]}, {x, -5, …
Run Code Online (Sandbox Code Playgroud)

wolfram-mathematica

6
推荐指数
3
解决办法
520
查看次数

多线程自托管WCF服务

看起来WCF在使用自托管时只使用一个线程.我想为此使用多个线程或某种线程池.是否可以使用自托管配置或我需要使用IIS?

.net wcf

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

将字符串从delphi dll返回到64位的C#调用者

我有一个C#应用程序,它使用以下代码调用本机Delphi dll:

C#

[DllImport("NativeDLL.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.StdCall)]
public static extern int GetString(string out str);
Run Code Online (Sandbox Code Playgroud)

德尔福

function GetString(out a: PChar): Integer; stdcall;
begin
  a := PChar('abc');
  Result := 1;
end;
Run Code Online (Sandbox Code Playgroud)

这在32位应用程序中工作正常.但是当我编译64位的C#exe和Delphi dll时,我遇到了一个奇怪的问题.在Delphi调试器中调用GetString之后,我可以看到.NET代码中某处出现异常,并且Debugger Output窗口中出现以下字符串:"检测到严重错误c0000374".Google表示此错误与堆损坏有关.我尝试使用ref/var参数修饰符而不是out/out.仍然没有运气.为什么我会收到此错误?我应该为64位使用不同的调用约定吗?

BTW.以下组合工作正常:

C#

[DllImport("NativeDLL.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.StdCall)]
public static extern string GetString(string a);
Run Code Online (Sandbox Code Playgroud)

德尔福

function GetString(a: PChar): PChar; stdcall;
var
  inp: string;
begin
  inp := a;
  Result := PChar('test ' + inp);
end;
Run Code Online (Sandbox Code Playgroud)

工作良好.但我确实需要返回一个字符串作为out参数.

c# delphi pinvoke

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