I have a class:
public class class1
{
public string Property1 {get;set;}
public int Property2 {get;set;}
}
Which will be instantiated:
var c = new class1();
c.Property1 = "blah";
c.Property2 = 666;
So bear with me (I am new to generics), I need another class with a property of a generic type so that Property1 or Property2 can be used to set Property3:
public class Class2
{
public GenericType Property3 {get;set;}
}
I want to be able to:
var c2 = new class2();
c2.Property3 = c1.Property2 // Any property of any type.
Regarding to edited version of the question:
If you need a property, which can be set with any type, the most reasonable solution here is to simply use property of type Object. For C# compiler there is no way to find out instance of which exactly type you've previously pushed into property setter.
I think you may have misunderstood generics. Another word that could be used is "template" but that is avoided because it is used for more advanced things in C++.
The following will create a generic class of a currently undefined type T.
To use this you need to specify the missing type:
This will create an object that has a property Property3 that is of type int.
... or ...
This will create an object that has a property Property3 that is of type string.
From your question I believe you actually want a type where you can assign any type to it at runtime, but this is not what generics provide.
@bytenik I think the originator is asking that class3 be defined to contain a generic property. That way when he / she has a property from class1 or class2 which in this case is a string / int that class3's property could handle either case.
I think the intent is the poster wants to do this:
I think the poster will need to cast it to type T for this to work though.
Look at the link that was posted for an example: Making a generic property
Here is what you can do:
Notice how your template property2 gets the value of property1. You have to tell it what kind of generic.