When I\'m building, VS show error. This is my code:
public Composite buildComposite(ComboBox subs, ComboBox bas)
{
int count = 0;
Composite a = new C
you are trying to return an instance of class Composite
from a public method, but Composite
is not public therefore can't be returned as any calling code cannot know anything about the Composite
class as it cannot see it.
Make your Composite
class public.
public class Composite{...}
or make your method which is returning your Composite
have the same visibility as your class (probably private):
private Composite buildComposite(ComboBox subs, ComboBox bas)
Which of these is appropriate will depend on whether you need to call the method (or use the class) from outside your current assembly.
By default a class is usually as 'hidden' as it can be, so private for classes. Read more about the default visibility here
Your Composite
class is not public
. You can't return a non-public type from a public method.
If you don't specify an accessibility for a non-nested class then internal
is used by default. Add public
to your Composite
class definition:
public class Composite
{
...
Alternatively, if buildComposite
doesn't need to be public
(meaning it's only used internally by the form), then you could make the method private
as well:
private Composite buildComposite(ComboBox subs, ComboBox bas)
{
....
Your custom type, Composite, is currently less accessible than your method buildComposite. For other classes to see this public method, they must also have public access to the Composite class/struct.
if Composite
was defined in unreachable/unmodifiable code like class Composite
, you could try making buildComposite
as internal. Like
internal Composite buildComposite(ComboBox subs, ComboBox bas)
. This way it is still more accessible by making the method private.