If you want to use methods FROM any class from another assembly, then you need to have these methods public in this class (you can make them protected and create a successor). The class must also be public (or protected and make a successor). In general, you can do everything internal and add InternalsVisibleTo to the assembly where you want to use the internal methods, all at your discretion.
Sample code where Assembly 1 is connected to Assembly 2
// Assembly 1 public class Class1 { public void Method1() { } } // Assembly 2 new Class1().Method1();
Update
The class must be in a specific namespace, try to find a line in the ArrayClass.cs file that contains the word namespace . On the same line, after the word namespace the name of your space is specified, try inserting it directly before the class, for example, if in my example Class1 has Assembly1 , then from the second assembly you can refer to it like this: Assembly1.Class1 (and create it like this: new Assembly1.Class1() )
Update 2
I noticed a little strange thing, maybe this is a coincidence, but still, I dare to assume that your first and second projects are WinForms applications. Although, for your question, you should expect that WindowsFormsApplication1 will be like a class library (.dll), but still, .exe files can also be added to links to other projects. Make sure that the link is exactly present, because adding another project to the solution is not enough. Just in case: https://msdn.microsoft.com/ru-ru/library/wkze6zky(v=vs.120).aspx
namespacewrite thenamespaceinusing? Target framework for both projects the same? - Igor