Daanv z
Daanv z

Reputation: 393

Return String from Unknown Class

Say I have 2 classes:

Class 1:

public class Class1
{
    public static string Test = "Class1";
}

And Class 2:

public class Class2
{
    public static string Test = "Class2";
}

Now in my mainform, I have an array of objects:

object[] Objects = new object[2];
Objects[0] = new Class1();
Objects[1] = new Class2();

Now say I would want to get the Test string from object[0] How would I retrieve that?

I have tried

Objects[0].GetType().GetProperty("Test");  //Returns a NullReference

Upvotes: 1

Views: 162

Answers (3)

Simon Karlsson
Simon Karlsson

Reputation: 4129

First off, you cannot call anything declared static on a instance. And secondly this is exactly what polymorphism is for.

public interface IClass
{
    string Test { get; }
}

public class Class1 : IClass
{
    public string Test
    {
        get { return "Class1"; }
    }
}

public class Class2 : IClass
{
    public string Test
    {
        get { return "Class2"; }
    }
}


IClass[] Objects = new IClass[2];
Objects[0] = new Class1();
Objects[1] = new Class2();

Then you can just do.

var str = Objects[0].Test;

Upvotes: 2

BugFinder
BugFinder

Reputation: 17858

You can do

if (object[0] is Class1) { ... }
if (object[1] is Class2) { ... }

such as

Console.WriteLine(Class1.Test );

So you could do if (Objects[0] is Class1) Console.WriteLine(Class1.Text); as a whole piece of code.

Upvotes: 2

Helic
Helic

Reputation: 949

Objects[0].GetType().GetField("Test").GetValue(null);

Upvotes: 0

Related Questions