我试图创建一个在 C# 中的 winforms 应用程序中使用的类库。
在我的应用程序中,我从一个文本框输入,并通过一个按钮单击我用一个参数(来自文本框)实例化我的事件。我试图用这个参数创建一个构造函数——但无济于事。似乎如果我只是将一个类添加为现有项目,我可以这样做,但在引用类库时不能这样做。
如果可能的话,只是想找到一种在类库中使用单参数构造函数的方法。请帮忙。(这可能在逻辑上不起作用,因为当我引用类库时 - 我实际上是在原始程序集之外 - 但也许......)
我试图创建一个在 C# 中的 winforms 应用程序中使用的类库。
在我的应用程序中,我从一个文本框输入,并通过一个按钮单击我用一个参数(来自文本框)实例化我的事件。我试图用这个参数创建一个构造函数——但无济于事。似乎如果我只是将一个类添加为现有项目,我可以这样做,但在引用类库时不能这样做。
如果可能的话,只是想找到一种在类库中使用单参数构造函数的方法。请帮忙。(这可能在逻辑上不起作用,因为当我引用类库时 - 我实际上是在原始程序集之外 - 但也许......)
如果您的新类库位于单独的 C# 项目中,则需要先从 WinForms 应用程序设置对该项目的引用,然后才能使用该类。
当然,我正在尝试在您原始帖子的字里行间阅读。听起来你知道如何让它工作,只是在单独的项目中定义类时不知道。如果我误解了,请提供更多信息。
还没有足够的网站经验来支持或评论自己,但 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...
}
}
没有更多的例外。:)
听起来您的类没有两个构造函数...(重载),例如
public class YourClass
{
public YourClass()
{
}
public YourClass(String OneParameter) // this OVERLOADS the default No parameter one
{
DoWhatever with your OneParameter...
}
}