C# 获取类型并返回该类型的实例的泛型方法?

C# 获取类型并返回该类型的实例的泛型方法?,c#,generics,C#,Generics,我有一堆具有相同属性的模型——绿色人、蓝色人等等。对于每一个模型,我都有一个控制器,在帖子中,我将它们的图片推送到某个服务器,并创建一个SQL条目来描述该条目。事实上,我的模特是绿色人物画、蓝色人物画等等 所以我有点像: GreenPeoplePicture greenPeoplePicture = new GreenPeoplePicture(); greenPeoplePicture.Name = "blah" greenPeoplePIcture.Date = DateTime.UtcN

我有一堆具有相同属性的模型——绿色人、蓝色人等等。对于每一个模型,我都有一个控制器,在帖子中,我将它们的图片推送到某个服务器,并创建一个SQL条目来描述该条目。事实上,我的模特是绿色人物画、蓝色人物画等等

所以我有点像:

GreenPeoplePicture greenPeoplePicture = new GreenPeoplePicture(); 
greenPeoplePicture.Name = "blah"
greenPeoplePIcture.Date = DateTime.UtcNow;
等等。填写完毕后,我将流式传输到远程服务器,然后将“greenPeoplePicture”保存到GreenPeoplePictures表中。我想为此编写一个通用方法。我不知道如何在不传递任何变量的情况下传递类型本身,因为我想:

GreenPeoplePicture greenPeoplePicture = new GreenPeoplePicture(); 
在方法中,也有返回类型为
GreenPeoplePicture
。我确信这篇文章相当于“我不会编码,也不理解泛型”,但我试过了——至少告诉我这是否可能。MSDN和TutorialPoint没有多大帮助

像这样的

public T MakeColourPerson<T>() where T : new() {
    return new T();
}

var myPerson = MakeColourPerson<GreenPeoplePicture>();

假设
colorPeoplePicture
公开泛型的属性
Name
Date
,则可以使用
default(T)
将变量初始化为默认值,也可以使用
new T()
创建实例。为了使用
new()
,您应该通过添加
new()


如果您想处理每种类型的不同属性,那么泛型不能完全解决这个问题,您必须用反射来补充它,以便动态查找属性。

我非常确定这正是我需要的,谢谢。现在我要试着把我的头完全绕过去。哦,它们都是从一张彩色照片上继承下来的。非常感谢,说真的。好吧,把“功夫”换成“仿制药”,这就是我在读了那篇完全编辑过的文章后的感受。谢谢你的回复,还有更多需要思考的。
public T MakeColourPerson<T>() 
    where T : ColourPeoplePicture, new() 
{
    var colourPerson = new T();
    colourPerson.Name = "blah";
    colourPerson.Date = DateTime.UtcNow;
    return colourPerson;
}
public T Factory<T>() where T : new() {
    return new T();
}
    return default(T);