Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 6729729
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 26, 20262026-05-26T10:19:30+00:00 2026-05-26T10:19:30+00:00

Lets say I have a generic class: class Foo { // protected Type t;

  • 0

Lets say I have a generic class:

class Foo {
//    protected Type t;

//    public void SetT(string strval) {
//        ((Foo<t>)this).Set(strval);
//    }
}

class Foo<T> : Foo {
    private T val;

    public void Set(string strval) {
        if (this is Foo<float>) {
            this.val = float.Parse(strval);
        } else if (this is Foo<int>) {
            this.val = int.Parse(strval);
        }
    }
}

Now I create an object and put it in an ArrayList:

ArrayList a = new ArrayList();
a.Append(new Foo<float>);

And then I forget the type of Foo<>. Now, how do I Set? I tried the obvious candidates:

(Foo)a[0].Set("5.0");
(Foo<a[0].GetType()>)a[0].Set("5.0");

but those failed.

Is there a way I can call that Set method without explicitly knowing the type of Foo<>?

If not, can I somehow save type of Foo into Foo.t, and then uncomment and use Foo.SetT?

Ah, generics. Very nice tool if you know how to use them 🙂

Regards,
dijxtra

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-26T10:19:31+00:00Added an answer on May 26, 2026 at 10:19 am

    There’s absolutely no reason to be using generics here. Generics are intended to be used when the type of operations you will be performing are generic. In other words, they are independent of the type(s) on which they are performed. You are doing the opposite: the operation will be different depending on the types.

    Given that, you should remove the generic parameter, make Set() and Foo abstract, and derive appropriate classes to handle the different types:

    abstract class Foo
    {
        public abstract void Set(string value);
    }
    
    class FooDouble : Foo
    {
        double val;
        public override void Set(string value)
        {
            this.val = double.Parse(value);
        }
    }
    
    // Etc.
    

    Then, you should be storing your Foos in a List<T>:

    List<Foo> fooList = new List<Foo>();
    fooList.Add(new FooDouble());
    

    Later, you can say this:

    fooList[0].Set("5.0");
    

    And it will just work! No need to remember!

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

Lets say have this immutable record type: public class Record { public Record(int x,
Lets say i have this class: class Test123<T> where T : struct { public
Lets say I have a class, which implements a generic interface public interface IItem
Lets say I have the following code: abstract class Animal case class Dog(name:String) extends
Lets say I have an array like this: string [] Filelist = ... I
Let's say I have these classes: public class BaseMapClass<T1, T2> { protected T1 Thing1;
Let's say I have a generic Object class, and a generic List class. I
Lets say I have a Dictionary object: Dictionary myDictionary<int, SomeObject> = new Dictionary<string, SomeObject>();
Lets say I have a single object of type Car which I want to
Lets say we have something like: <div class=row> <div class=box> <a class=more href=#more/> </div>

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.