我应该在哪里创建我的静态方法?

时间:2016-12-14 16:09:34

标签: asp.net-mvc static

我需要创建以下静态方法。这需要在特定文件夹(App_Code或Models)中,还是应该为此创建一个新文件夹?我应该遵循一个特定的惯例吗?

public static DbGeography CreatePoint(double lat, double lon, int srid = 4326)
{
    string wkt = String.Format("POINT({0} {1})", lon, lat);

    return DbGeography.PointFromText(wkt, srid);
}

另外,我是否需要在我的控制器中指定一个新的“使用”来调用它?

1 个答案:

答案 0 :(得分:2)

方法放置

实际上没有任何硬性规定。

在您的情况下,代码似乎是一种帮助方法。在一个小型的单一项目应用程序中,我倾向于创建一个帮助者'在那里创建一个静态类,包含这样的方法。

您对DbGeography类中的PointFromText方法有依赖性,因此还需要移动它。

事实上,PointFromText听起来像执行与CreatePoint相同的任务,但采取不同的输入。 它会使CreatePoint <{3>}的create an overload变得更清晰

DbGeography CreatePoint(string wkt, int srid); 
DbGeography CreatePoint(double lat, double lon, int srid = 4326);

现在可以使用纬度/经度或适当的字符串/ srid调用CreatePoint。

使用指令

using directive取决于静态方法所在的命名空间:

namespace Foo
{
    public static class HelperMethods
    {
        public static DbGeography CreatePoint(double lat, double lon, int srid = 4326)
        {
            string wkt = String.Format("POINT({0} {1})", lon, lat);

            return DbGeography.PointFromText(wkt, srid);
        }
    }
}

通过上面的示例,在您的调用代码中,您将有几个选项。你可以

1)直接调用方法:

Foo.HelperMethods.CreatePoint(51.5, 0.1);

2)使用using指令导入名称空间,并调用方法:

using Foo;
...
HelperMethods.CreatePoint(51.5, 0.1);

3)导入静态类并直接访问方法:

using static Foo.HelperMethods;
...
CreatePoint(51.5, 0.1);

根据您的偏好,您采取了哪种方法,我可能会选择第二种选择,只是为了提高可读性。