Reputation: 393
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
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
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