如何确保使用我的域模型的Program类而不是入口Program类?

时间:2017-08-22 15:27:37

标签: c#

"程序"是我的域名中的一个词。我的域模型有一个名为Program的类。如果我在代码中使用MyNamespace.Program并且没有通过Program完全限定它,那么MyNamespace.Areas.SomeArea.Data.Program条目类就会被接收。困扰我的部分是,这可能导致应用程序编译,然后在运行时出错。

我对使我无法编译将在运行时异常的应用程序的解决方案感兴趣。我想到的最佳解决方案是将MyNamespace.Program条目类重命名为其他类。

附录:

这个问题的原始标题是"我可以将.NET核心课程命名为其他内容吗?#34;。不幸的是,这导致了多次下来的投票,并且一些出人意料的回应我认为是一个简单的问题。因此,我没有回答这个问题,而是将这个问题改写为对我具体问题的描述,希望它对将来偶然发现它的人更有帮助。

2 个答案:

答案 0 :(得分:3)

是的,你可以。

但是,您可以更改的是Main方法名称(和签名,在某种程度上)。此外,如果您在不同的类中有两个Main方法,那么您必须告诉编译器哪个是您的应用程序的入口点。

答案 1 :(得分:2)

如果正确声明命名空间,则不应该遇到任何此类问题。

using MyNamespace;
using MyNamespace.Domain;

namespace MyNamespace.Data
{
    public class MyDbContext : DbContext { }
}

这可能会使编译器感到困惑,因为Programm可能会在MyNamespaceMyNamespace.Domain中定义。

using MyNamespace;

namespace MyNamespace.Data
{
    using MyNamespace.Domain;
    // or alternatively, because Domain is part of MyNamespace
    using Domain;

    public class MyDbContext : DbContext { }
}

后者不应该引起任何混淆问题,因为如果你有不明确/冲突的名字,编译器将从内部使用它,如果它没有在那里找到它,看看外面usings。

旁注

Program听起来不是域名模型的好名字,App / Application(软件)或Broadcast(电视)等imho