小编Ign*_*cia的帖子

从托管c ++生成COM可见程序集(C++/CLI)

我需要开发一些应该可以从VB6使用托管C++(C++/CLI)调用的类.

我首先在C#中开发了一个示例,我只需使用"注册COM互操作"和"使汇编COM可见"(并使用属性[ClassInterface(ClassInterfaceType.AutoDual)]来通过COM进行汇编而没有问题在VB6上提供方法.

之后,我尝试将示例转换为C++/CLI,但没有成功.我使用[ClassInterface(ClassInterfaceType.AutoDual)]属性创建了相同的类.我已设置"嵌入式IDL"设置以指定输出TLB,但不会自动生成TLB.如果我在生成的DLL上使用tlbexp util,我得到一个可以在VB6导入的tlb但是当我尝试创建一个实例时,我得到一个"ActiveX compoennt无法创建对象(429)"

我还需要做什么来让项目运行?

提前致谢.

com interop managed-c++ c++-cli

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

为什么垃圾收集器以错误的顺序获取对象?

我有一个带有两个类A和B的应用程序.类A有一个对类B的引用.类的析构函数执行一些资源清理,但它们必须按正确的顺序调用,首先是A的析构函数和那么B的析构函数

发生的事情是,以某种方式首先调用B的析构函数,然后A的析构函数崩溃,因为它试图从已处置的对象执行方法.

GC的这种行为是否正确?我希望GC检测到A有对B的引用,然后先调用A析构函数.我对吗?

谢谢伙伴们!

PD:如果对析构函数/终结器/处理器等有疑问,那就是我们所拥有的:

~A()
{
    this.Dispose();
}

~B()
{
    this.Dispose();
}    
Run Code Online (Sandbox Code Playgroud)

c# garbage-collection destructor

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

有没有办法指定哪里T:new()限制,但内部构造函数?

我已经创建了一个需要实例化其实现类型的泛型类,因此实现类型必须具有可访问的参数而不是构造函数.看起来new()限制可以完成这项工作,但是当我将其设置为内部时,它强制执行类型以具有公共构造函数(但是两者都在同一个程序集中可访问).

  1. 是否有理由强迫它公开而不是"可访问"?
  2. 有办法做我需要的吗?

提前致谢.

编辑:这样做的原因是我有一个必须通过Singleton使用的类X. Singleton类是一个泛型类,我想使类X构造函数内部避免外部用户以错误的方式访问对象(调用构造函数).

.net c# generics restriction

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

如何使用Entity Framework包含已排序的导航属性

我有一个内部A集合的实体B.我装了一个_entity.A.Include(a => a.B)

现在我希望将B放入A中,按自定义OrderBy排序.我试过_entity.A.Include(a => a.B.OrderBy(o => o.Version)但是得到了:

Include路径表达式必须引用在类型上定义的导航属性.使用虚线路径作为参考导航属性,使用Select运算符作为集合导航属性.

有关如何实现这一目标的任何想法?

谢谢.

版本是整数.

.net c# linq include

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

Visual Studio WPF设计器中的错误?

检查以下场景(其他可能也适用)[您可以创建项目,只需在右侧文件中复制粘贴代码]:

a - 使用基本内容创建ResourceDictionary(Resources.xaml):

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">

    <SolidColorBrush Color="Red" x:Key="Test" />

    <Style TargetType="{x:Type GroupBox}" x:Key="Test2" >
        <Setter Property="Background" Value="Blue" />
    </Style>

    <Style TargetType="{x:Type TextBlock}" >
        <Setter Property="Foreground" Value="Green" />
    </Style>
</ResourceDictionary>
Run Code Online (Sandbox Code Playgroud)

b - 创建一个用户控制库,其他人将继承包含基本资源的用户控制库(UserControlBase.cs):

using System.Windows.Controls;
using System;
using System.Windows;

namespace ResourceTest
{
    public class UserControlBase : UserControl
    {
        public UserControlBase()
        {
            this.Resources.MergedDictionaries.Add(new ResourceDictionary() { Source = new Uri("ResourceTest;component/Resources.xaml", UriKind.RelativeOrAbsolute) });
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

c - 创建从基础继承的UserControl(UserControl1.xaml):

<ResourceTest:UserControlBase x:Class="ResourceTest.UserControl1"

             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
             xmlns:ResourceTest="clr-namespace:ResourceTest"

             mc:Ignorable="d" 

             d:DesignHeight="300" 
             d:DesignWidth="300" >
    <Grid>
        <GroupBox …
Run Code Online (Sandbox Code Playgroud)

.net wpf resources designer visual-studio-2010

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

如何在 Visual Studio 2010 中将新项目添加到“将新项目添加到项目”上下文菜单中?

如何将我自己的模板添加到 Visual Studio 2010“添加”上下文菜单中显示的元素列表中?

在此输入图像描述

谢谢。

.net c# visual-studio-2010

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

空抽象类/接口是糟糕设计的标志?

我有以下类结构:

在此输入图像描述

事实上,每个请求不会共享任何内容,因为当我处理请求时,我会执行typeof/ cast。使用空根类的原因是在编译时限制可以传递给处理请求的方法的类:

void ProcessRequest(Request request)
Run Code Online (Sandbox Code Playgroud)

这个设计有什么缺陷吗?有一个空的根类/接口对我来说感觉很奇怪。

.net c# architecture inheritance

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

如何使用 JustMock 模拟构造函数?

我正在尝试测试以下代码:

public ICollection<RawCatalog> ReadCatalog(string familyName)
{
    // Root folder for the family
    string familyFolder = this.GetFamilyFolder(familyName);
    DirectoryInfo familyFolderInfo = new DirectoryInfo(familyFolder);

    foreach (DirectoryInfo subFamilyFolderInfo in familyFolderInfo.EnumerateDirectories())
    {
        // Do stuff
    }
}
Run Code Online (Sandbox Code Playgroud)

我预计这会起作用:

// Arrange
DirectoryInfo fakeDirectoryInfo = Mock.Create<DirectoryInfo>(Constructor.Mocked);
Mock.Arrange(() => new DirectoryInfo(@"testRoot\DrivesData\TestFamily")).Returns(fakeDirectoryInfo);
Mock.Arrange(() => directoryInfo.EnumerateDirectories()).Returns(new DirectoryInfo[] { });
Run Code Online (Sandbox Code Playgroud)

但似乎没有在构造函数中返回 fakeDirectoryInfo 。我应该如何做测试?(如果可能的话,我不应该更改源代码,因为它是工作代码)。

我已经阅读了一些关于未来模拟和使用 DoNothing() 的内容,但不确定这是否适用于我自己的情况。

提前致谢。

c# unit-testing justmock

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

如何在任务抛出异常而不等待终结器时使应用程序崩溃

我们在.Net 4(没有异步等待可用)应用程序中使用任务,有时它们用于启动"Fire and Forget"操作,如下所示:

private void Test()
{
    Task task = Task.Factory.StartNew(() =>
    {
        throw new ApplicationException("Test");
    });
}
Run Code Online (Sandbox Code Playgroud)

我们希望此异常在不等待任务的情况下使应用程序崩溃(否则将其置于任务中是没有意义的,至少在我们的场景中)并且不等待终结器,因为我们想要在发生意外错误时关闭应用程序避免状态损坏(我们正在保存异常发生时的状态).

我的猜测是,不知怎的,我们应该使用延续任务,但是将延续代码放在另一个不会使应用程序崩溃的任务中,所以我在这里被阻止了.

任何帮助将非常感激

编辑:如果切换到ThreadPool,结果是预期的结果.以下代码崩溃了应用程序:

ThreadPool.QueueUserWorkItem((c) =>
{
    throw new ApplicationException("Test");
});
Run Code Online (Sandbox Code Playgroud)

.net c# exception task task-parallel-library

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

比较环境变量和常量时,字符串比较在Javascript中不起作用

我们有一个使用CRA 1.x创建的简单React应用程序。

We installed dotenv to use environment variables on the project and our variables are included on the .env and .env.development files like this:

.env

REACT_APP_LOGGER=LOGGER
Run Code Online (Sandbox Code Playgroud)

.env.development

REACT_APP_LOGGER=NO_LOGGER
Run Code Online (Sandbox Code Playgroud)

Then in the code we have this logic:

if(process.env.REACT_APP_LOGGER === "LOGGER") {
    // do something
}
Run Code Online (Sandbox Code Playgroud)

On local builds with webpack 4 in development mode the if is true, and on production mode is false.

But on azure, in both cases is false

process.env.REACT_APP_LOGGER === "LOGGER" // false
Run Code Online (Sandbox Code Playgroud)

We have checked …

javascript environment-variables node.js

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