The fact that it's a DLL is irrelevant - the procedure is the same regardless of where the class containing the data is.
Stop and think about the data you want to pass, and how you would handle it if it was in the same assembly. Work out how you would do it there, and it's the same solution for a class in a DLL - all you need to do is add the reference to the DLL to your project, and a
using
statement to the source file to access it.
Then it's exactly the same: static data is accessed via the class name, instance data via the instance of the class you created:
public class InTheDLL
{
public static string[] StaticArrayOfStrings { get { ... } set { } }
public List<MyClass> Items { get{ ...} set { } }
}
string[] strings = InTheDLL.StaticArrayOfStrings;
InTheDLL instance = new InTheDLL();
List<MyClass> collection = instance.Items;
You can return anything, including multiple properties, tuples, whatever your data requires.