通用或重载方法

时间:2013-11-04 21:23:11

标签: c# generics overloading

我有三种方法。什么是将它们合二为一的最佳方式。

public App Get(customobj data, string x)
{
    return null;
}

public Con Get(customobj data, string x)
{
    return null;
}

public Env Get(customobj data, string x)
{
    return null;
}

3 个答案:

答案 0 :(得分:1)

这可能是一个不错的小通用:

public static TOutput Get<TOutput>(this customobj data, string x)

请记住,实现使用工厂模式的后面的类可能是最好的实现,但这完全取决于您。您可以轻松地打开类型名称并构建正确的类型。

使用它看起来像这样:

myCustomObj.Get<Con>("my x val");

答案 1 :(得分:1)

你的问题的简单答案是没有最好的方法。除非所有三个代码都是相同的(不太可能返回三种不同的类型),所以将它们保留为三种方法,因为任何将它们组合成一种的尝试都会使代码变得更加混乱,更难以阅读并因此难以维护。进一步,给他们更好的名字,描述每个人做的事情。至少,像:

public App GetApp(customobj data, string x)
{
    ...
}

public Con GetCon(customobj data, string x)
{
    ...
}

public Env GetEnv(customobj data, string x)
{
    ...
}

答案 2 :(得分:0)

据我了解你的问题。你可以创建一个类

Public parameter
{
   App app;
   Con con;
   Env env;
}
public parameter Get(customobj data, string x)
{
    parameter _pobj=new parameter();
    //you can add the result here if you want or else return null.
    _pobj="somehting1";
    _pobj="somthing2";
    _pobj="somthing3";

    return _pobj;
}

您可以通过说_pobj.env或上述参数

在不同的电话中收集它们