简体   繁体   中英

Class Library in C#

I tried to create a class library that is being used in a winforms application in C#.

In my application I have input from a textbox and through a button click I'm instantiating my event with one parameter (from the textbox). I tried to create a constructor with this one parameter - but to no avail. It seems if I just add a class to be existing project I can do this but not when referencing a class library.

Just wanted to find a way to use a one parameter constructor within a class library if possible. Please help. (this may not work logically because when I reference the class library - I am actually going outside the original assembly - but maybe....)

If your new class library is in a separate C# project you need to set a reference to that project from your WinForms app before you can use the class.

Of course I'm trying to read between the lines of your original post. It sounds like you know how to make it work, just not when the class is defined in a seperate project. If I've misunderstood, please give more info.

Not enough site experience to upvote or comment myself yet, but DRapp's answer fixed my problem. Since the original question is a bit vague I thought I'd detail what I was seeing a bit more:

I am writing a metro application in C++ which references a class library created in C#. Creating objects exported from the C# module was working fine, unless their constructors had parameters.

// 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

Attempting to create an object of type B from the C# module in C++ would throw an exception, with a somewhat cryptic "WinRT transform error" show in the output log.

To fix this, I was able to do what DRapp suggested and add a default constructor to 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...
    }
}

No more exception. :)

it sounds like you don't have two constructors... (overloaded) for your class such as

public class YourClass
{
   public YourClass()
   {
   }


   public YourClass(String OneParameter)  // this OVERLOADS the default No parameter one
   {
      DoWhatever with your OneParameter...
   }
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM