0

我试图创建一个在 C# 中的 winforms 应用程序中使用的类库。

在我的应用程序中,我从一个文本框输入,并通过一个按钮单击我用一个参数(来自文本框)实例化我的事件。我试图用这个参数创建一个构造函数——但无济于事。似乎如果我只是将一个类添加为现有项目,我可以这样做,但在引用类库时不能这样做。

如果可能的话,只是想找到一种在类库中使用单参数构造函数的方法。请帮忙。(这可能在逻辑上不起作用,因为当我引用类库时 - 我实际上是在原始程序集之外 - 但也许......)

4

3 回答 3

3

如果您的新类库位于单独的 C# 项目中,则需要先从 WinForms 应用程序设置对该项目的引用,然后才能使用该类。

当然,我正在尝试在您原始帖子的字里行间阅读。听起来你知道如何让它工作,只是在单独的项目中定义类时不知道。如果我误解了,请提供更多信息。

于 2010-07-06T18:39:33.683 回答
1

还没有足够的网站经验来支持或评论自己,但 DRapp 的回答解决了我的问题。由于最初的问题有点含糊,我想我会详细说明我所看到的内容:

我正在用 C++ 编写一个 Metro 应用程序,它引用了一个用 C# 创建的类库。创建从 C# 模块导出的对象工作正常,除非它们的构造函数有参数。

// C# file exported to .winmd class library for use in metro app
namespace A
{
    public sealed class B
    {
        public B(bool bTest)
        {}

        // Other methods/members...
    }
}

// C++ metro app referencing .winmd created from C# above
...

A::B^ spB = ref new A::B(bTest);  // Throws an exception

尝试从 C++ 中的 C# 模块创建类型 B 的对象会引发异常,并在输出日志中显示有点神秘的“WinRT 转换错误”。

为了解决这个问题,我可以按照 DRapp 的建议为 B 添加一个默认构造函数:

// C# file exported to .winmd class library for use in metro app
namespace A
{
    public sealed class B
    {
        public B()
        {}
        public B(bool bTest)
        {}

        // Other methods/members...
    }
}

没有更多的例外。:)

于 2012-03-04T21:42:32.910 回答
0

听起来您的类没有两个构造函数...(重载),例如

public class YourClass
{
   public YourClass()
   {
   }


   public YourClass(String OneParameter)  // this OVERLOADS the default No parameter one
   {
      DoWhatever with your OneParameter...
   }
}
于 2010-07-06T18:45:51.377 回答