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