【发布时间】:2019-01-29 14:02:02
【问题描述】:
我有一个 ASP.NET MVC(非核心)项目,在该项目中遇到了一些问题,我认为最终开始学习如何正确使用泛型可以解决我的问题。
我的情况是我有一个 SQL 连接,它返回数据,并且根据 SQL 中一个字段的结果,我想使用两种不同的模型。这些模型有很多共同的属性,所以我认为最好的做法是创建一个方法来选择要创建的模型,填写差异,返回模型,然后继续填写“共同”属性。
我曾尝试阅读一些有关泛型的内容,但我对此很陌生,所以我没有取得任何重大进展。
我的代码示例如下所示:
public ResultVM MainClass()
{
var resultData = new ResultVM();
// ... SQL returns data
while (reader.Read())
{
resultData.Add(reader);
}
return resultData;
}
public object CreateObject(SqlDataReader indata)
{
if((indata["Associate"].ToString()) == "0")
{
var individual = new Individual();
}
else
{
var group = new Group();
}
return object;
}
如何动态(取决于Associate 字段的值)创建个人或组?
【问题讨论】:
-
让事情变得简单,使用两种不同的方法[
CreateAssociateObject()和CreateGroupObject()]并避免不必要的转换 -
那绝对是最好的做事方式?由于它们有很多共同点,这意味着我会重复很多次。
-
那你为什么不用那些常见的东西创建一个
Interface呢? -
是的@sujithkarivelil 是正确的创建接口并返回它的引用或创建基类以返回它
-
如果两个模型可以是有意义的基类的子类,您可以创建一个基类并将公共属性移到那里。但我在这里闻到了一些错误的设计决定。你能解释一下你想要做什么吗?为什么你有一些要求?
标签: c# asp.net-mvc dynamic-programming