Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

C# Property with Generic Type [duplicate]

Tags:

c#

.net

generics

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.
like image 246
youwhut Avatar asked Jan 11 '10 18:01

youwhut


1 Answers

@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.

public class Class3<T>
{
 public T Property3 {get;set;}
}

I think the intent is the poster wants to do this:

Class3.Property3 = Class2.Property2

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:

namespace GenericSO
{
    public class Class1
    {
        public int property1 { get;set;}

    }

    public class Class2<T>
    {
        public T property2 { get; set; }
    }

    class Program
    {
        static void Main(string[] args)
        {
            Class1 c1 = new Class1();
            c1.property1 = 20;

            Class2<int> c2 = new Class2<int>();

            c2.property2 = c1.property1;
        }
    }
}

Notice how your template property2 gets the value of property1. You have to tell it what kind of generic.

like image 151
JonH Avatar answered Sep 30 '22 01:09

JonH