Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
312 views
in Technique[技术] by (71.8m points)

c# - Create an instance of a Type, provided as a parameter to a method

The class to instantiate:

public class InstantiateMe
{
    public String foo
    {
        get;
        set;
    }
}

Some pseudo-code:

public void CreateInstanceOf(Type t)
{
    var instance = new t();

    instance.foo = "bar";
}

So far I'm figuring that I need to use reflection to get this done, given the dynamic nature of what I want to achieve.

Here's my success criteria's:

  • Create an instance of any type
  • Create instances of types without having to invoke their constructor
  • Access all public properties

I would greatly appreciate some working example-code. I'm not new to C#, but I've never worked with reflection before.

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

Try the following to actually create the instance.

Object t = Activator.CreateInstance(t);

It is not possible however, without generics and constraints to statically access the members as shown in your example.

You could do it with the following though

public void CreateInstanceOf<T>() where T : InstantiateMe, new()
{
    T i = new T();
    i.foo = "bar";
}

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...