问题列表 - 第1097页

是否可以使用.NET泛型类实现COM接口?

我有以下界面,我正在尝试使COM可见.当我尝试生成类型库时,它不喜欢我的实现类派生自泛型类的事实.

是否可以将泛型类用作COM实现类?(我知道我可以编写一个非通用的包装器并将其导出到COM,但是这会添加另一个我宁愿不用的层.)

[ComVisible(true)]
public interface IMyClass
{
   ...
}

[ComVisible(true), ComDefaultInterface(typeof(IMyClass))]
[ClassInterface(ClassInterfaceType.None)]
public class MyClass : BaseClass<IMyClass>, IMyClass
{
   ...
} 
Run Code Online (Sandbox Code Playgroud)

错误信息:

Warning: Type library exporter encountered a type that derives 
from a generic class and is not marked as 
[ClassInterface(ClassInterfaceType.None)]. Class interfaces cannot
be exposed for such types. Consider marking the type with 
[ClassInterface(ClassInterfaceType.None)] 
and exposing an explicit interface as the default interface to 
COM using the ComDefaultInterface attribute.

.net generics com comvisible

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

检查集合中的重复项

假设您有一组Foo类:

class Foo
{
    public string Bar;
    public string Baz;
}

List<Foo> foolist;
Run Code Online (Sandbox Code Playgroud)

并且您想要检查此集合以查看是否有其他条目匹配Bar.

bool isDuplicate = false;
foreach (Foo f in foolist)
{
     if (f.Bar == SomeBar)
     {
         isDuplicate = true;
         break;
     }
}
Run Code Online (Sandbox Code Playgroud)

Contains() 不起作用,因为它将类比较为整体.

有没有人有更好的方法来做这个适用于.NET 2.0?

.net c# .net-2.0

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

如何使用Perl搜索归档文件

使用Perl读取压缩目录内容的首选方法是什么?

compression perl file-io search

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

Finalizer在其对象仍在使用时启动

简介: C#/ .NET应该是垃圾回收.C#有一个析构函数,用于清理资源.当一个对象A被垃圾收集在同一行我试图克隆其变量成员之一时会发生什么?显然,在多处理器上,有时,垃圾收集器赢了......

问题

今天,在关于C#的培训课程中,老师向我们展示了一些仅在多处理器上运行时才包含错误的代码.

我将总结一下,有时候,编译器或JIT通过在从被调用方法返回之前调用C#类对象的终结器来搞砸.

在Visual C++ 2005文档中给出的完整代码将作为"答案"发布,以避免提出非常大的问题,但基本要点如下:

以下类具有"Hash"属性,该属性将返回内部数组的克隆副本.在构造中,数组的第一项值为2.在析构函数中,其值设置为零.

关键是:如果你试图得到"示例"的"哈希"属性,你将获得一个干净的数组副本,其第一个项目仍然是2,因为正在使用该对象(因此,不是垃圾收集/定稿):

public class Example
{
    private int nValue;
    public int N { get { return nValue; } }

    // The Hash property is slower because it clones an array. When
    // KeepAlive is not used, the finalizer sometimes runs before 
    // the Hash property value is read.

    private byte[] hashValue;
    public byte[] Hash { get { return (byte[])hashValue.Clone(); } }

    public Example()
    {
        nValue = 2;
        hashValue = new byte[20]; …
Run Code Online (Sandbox Code Playgroud)

.net c# garbage-collection finalization

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

Ruby VM之间的差异

主要Ruby VM有哪些优点/缺点(比如功能,兼容性,性能和怪癖?)我知道还有一些额外的功能,比如能够通过JRuby使用Java接口.这些也有助于注意.在这一点上,任何VM都有明显的优势吗?在什么情况下?

ruby ironruby rubinius jruby

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

在哪里可以找到用于将Perl数据结构转换为JavaScript数据结构的Perl模块?

在哪里可以找到用于将Perl数据结构转换为JavaScript数据结构的Perl模块?

这是我的代码(梅森):

% # convert our @cti data structure into a javascript one
  var cti = [
% foreach my $cti_category (@cti) {
             {
                 label: "<% $cti_category->{'label'} %>",
                 value: "<% $cti_category->{'value'} %>",
                 children: [
%     foreach my $cti_type (@{$cti_category->{'children'}}) {
                            {
                              label: "<% $cti_type->{'label'} %>",
                              value: "<% $cti_type->{'value'} %>",
                            },
%     }
                           ]
             },
% }
            ];
Run Code Online (Sandbox Code Playgroud)

有这个模块吗?

javascript perl json mason data-structures

4
推荐指数
2
解决办法
1291
查看次数

加密web.config中的成员资格元素时出现问题

我正在尝试加密.Net应用程序的Web.Config中的"system.web.membership"元素,以保护Active Directory的用户名和密码.我正在使用aspnet_regiis命令进行加密,并为"pe"选项的值尝试了几个不同的字符串但没有成功.我已成功加密web.config上的"connectionstrings"元素.

CMD

C:\Windows\Microsoft.NET\Framework\v2.0.50727>aspnet_regiis -pe "connectionStrings" -site MySite -app /MyApp
Encrypting configuration section...
Succeeded!

C:\Windows\Microsoft.NET\Framework\v2.0.50727>aspnet_regiis -pe "membership" -site MySite -app /MyApp
Encrypting configuration section...
The configuration section 'membership' was not found.
Failed!

C:\Windows\Microsoft.NET\Framework\v2.0.50727>aspnet_regiis -pe "system.web.membership" -site MySite -app /MyApp
Encrypting configuration section...
The configuration section 'system.web.membership' was not found.
Failed!

Web.Config中

<configuration>
    ...
    <system.web>
        ...
        <authentication mode="Forms">
            <forms name=".ADAuthCookie" 
                   timeout="30"/>
        </authentication>
        <authorization>
            <deny users="?"/>
            <allow users="*"/>
        </authorization>
        <membership defaultProvider="MyADMembershipProvider">
            <providers>
                <add name="MyADMembershipProvider"
                     type="System.Web.Security.ActiveDirectoryMembershipProvider, System.Web, Version=2.0.0.0,Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" 
                     connectionStringName="ADConnectionString" …
Run Code Online (Sandbox Code Playgroud)

.net encryption configuration web-config

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

部署项目中缺少项目依赖项

我有一个VS2008部署项目,它为几个Windows服务构建了一个安装程序.

每个服务引用几个不同的项目:

CustomerName.MailSendingService
 -> CustomerName.Network
 -> CustomerName.Data
 -> CustomerName.Security

CustomerName.ProductIntegrationService
 -> CustomerName.Core
 -> CustomerName.Security

Windows服务项目,它们引用的项目以及部署项目都在同一个VS2008解决方案中.

我在部署项目的文件系统编辑器中添加了Windows服务项目的主要输出.

我的期望是Windows服务项目的主要输出将包括来自引用项目的DLL.但是,在构建部署项目时,缺少其中一个引用项目的DLL.(CustomerName.ProductIntegrationService缺失CustomerName.Security)

疯狂地,存在由Windows服务引用的其他项目的DLL; 只缺少一个项目的输出.

(编辑)我已经验证了引用在参考属性窗口中设置为Copy Local.引用项目的DLL放在Windows服务项目的bin\Release文件夹中,但未打包在为部署项目构建的MSI文件中.

(编辑2)根据Joseph Daigle的建议,我检查了依赖项是在主要输出的依赖项列表中,并且它没有标记为"排除",因此这似乎不是导致此问题的原因.

为什么只丢失一个项目的输出?

deployment-project visual-studio-2008

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

为什么小空间会一直出现在我的网页上?

这可能是一个愚蠢的问题,但如果有更好或更好的方法来做到这一点,我很乐意学习它.

我已经碰过这几次,包括最近,我的HTML页面的渲染版本中出现了小空格.直觉上我认为这些不应该存在,因为在文本或实体之外,页面HTML的格式化应该无关紧要,但显然确实如此.

我所指的是这个 - 我从客户端获得了一些关于他们希望他们的网站看起来如何的Photoshop文件.他们希望它看起来基本上像这个文件中的图像像素.

页面中的一个位置需要一个菜单​​栏,每个位置都会在悬停时更改位,就像一个超链接等.在Photoshop文件中这是一个长条,所以一个便宜又简单的方法是将该段拆分为多个图像,然后将它们放在文件中.

所以我本能地将它列出来(有更多内容,但这是要点)

<a href="page1.html">
  <img src="image1.png" />
</a>
<a href="page2.html">
  <img src="image2.png" />
</a>
<a href="page3.html">
  <img src="image3.png" />
</a>
Run Code Online (Sandbox Code Playgroud)

等等.

问题是图像之间有这么小的空间,这是不可接受的,因为客户希望这个像素完美(并且它看起来很简单).

让它正确渲染的一种方法是删除图像之间的回车

<a href="page1.html">
  <img src="image1.png" />
</a>
<a href="page2.html">
  <img src="image2.png" />
</a>
<a href="page3.html">
  <img src="image3.png" />
</a>
Run Code Online (Sandbox Code Playgroud)

这使得图像相互对立(所需的效果),但它使得线条非常长并且代码更难以维护(它包含在SO中,这是一个简化版本 - 真正的文件名和JavaScript更长撒在做徘徊).

在我看来,这不应该发生,但它看起来像HTML中的回车被渲染为一个小的空白空间.这种情况发生在所有浏览器中,看起来像.

我认为上面的两个片段应该是一样的是对还是错?有什么我做错了吗?也许用错误的编码保存文件?我应该让这些链接中的每一个都成为一个完美定位的CSS元素吗?

html css layout

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

捕获异常作为预期的程序执行流程控制?

我总是觉得期望定期抛出异常并将它们用作流逻辑是一件坏事.例外情况应该是,他们应该是" 例外 ".如果你期望并计划一个异常,这似乎表明你的代码应该被重构,至少在.NET中......
但是.最近的一个场景让我停下来.我刚刚在msdn上发布了这个,但是我想对它进行更多的讨论,这是一个完美的地方!

所以,假设你有一个数据库表,其中有几个其他表的外键(在最初提示辩论的情况下,有4个外键指向它).您希望允许用户删除,但仅限于没有外键引用; 你不想级联删除.
我通常只是检查是否有任何引用,如果有,我通知用户而不是删除.在LINQ中编写它是非常容易和轻松的,因为相关表是对象的成员,所以Section.Projects和Section.Categories等等很好用intellisense和所有类型...
但事实是LINQ然后必须潜在地检查所有4个表以查看是否有任何结果行指向该记录,并且命中数据库显然总是相对昂贵的操作.

这个项目的负责人让我把它改成只捕获一个代码为547(外键约束)的SqlException并以这种方式处理它.

我......
抗拒.

但是在这种情况下,吞下与异常相关的开销可能比吞下4个表命中更有效...特别是因为我们必须在每种情况下进行检查,但我们在这种情况下没有例外当没有孩子的时候......
加上数据库真的应该是负责处理参照完整性的人,这是它的工作而且做得很好......
所以他们赢了,我改变了它.

在某种程度上,我觉得我觉得不对.

你们对期望和故意处理异常有什么看法?它看起来比预先检查更有效吗?对于下一个查看代码的开发人员来说,更令人困惑的是它更令人困惑吗?它是否更安全,因为数据库可能知道开发人员可能不会考虑添加检查的新外键约束?或者是关于你认为最佳实践究竟是什么的观点?

.net sql sql-server exception-handling

11
推荐指数
2
解决办法
1429
查看次数