是否可以从.NET用户类中删除或消除冲突?

时间:2013-02-22 21:22:37

标签: c# asp.net-mvc

在我的.NET MVC项目中,我有一个名为User的模型,当我在剃刀视图中时,该类与System.Security.Principal.IPrincipal.WebPageRenderingBase.User冲突。 (并且仅在剃刀视图内)。

有没有办法给我的班级一个不同的全局别名?或者更好的是,阻止这个.NET类出现?

我不想要一个冗长的解决方案。 (前缀)有没有办法让remvoe引用这个愚蠢的用户属性?

这是每个人的常见问题还是我的设置有问题?

5 个答案:

答案 0 :(得分:12)

只需将模型类从User重命名为Person即可。每个解决方案都会以不必要的复杂性使您的代码膨胀。

其他事情: 如果您使用名为User 99%的类确定您在视图中使用模型,那么最佳方法是使用ViewModel,您可以在其中收集传递到视图所需的所有数据。因此,在视图中,User将成为此ViewModel的一个属性。

这种方法也可以帮助您根除ViewBags和类似的......

答案 1 :(得分:4)

完全符合你的班级资格,即

MyNamespace.Core.User

而不是

User

虽然我有点困惑,因为

System.Security.Principal.IPrincipal.WebPageRenderingBase.User

IPrincipal类型的属性不是名为User

的类型

答案 2 :(得分:4)

我通常会做以下事情:

using m = MyProject.MyNameSpace.MySubNameSpace;

var u = new m.User();

答案 3 :(得分:4)

@devlife与@Romias的回答有点混合。

通过实施using别名,您可以将User类“重命名”(在此文件中已定义),将其重命名为using语句中指定的内容。

例如:

using Person = NameSpace.SubNameSpace.Classes.User

然后,您可以在定义此别名的文件中使用Person作为User类。

请参阅:http://msdn.microsoft.com/en-us/library/sf0df423(v=vs.71).aspx

最后一节提供了完整的代码示例。

答案 4 :(得分:1)

也许伟大的Jon Skeet有你的答案:

What use is the Aliases property of assembly references in Visual Studio 8”:

  

这是针对“外部别名”。假设你想要使用两种不同的   类型,两者都被称为Foo.Bar(即名称空间中的Bar   富)。这两种类型将在不同的组件中(根据定义) -   您使用VS中的属性将别名与每个引用相关联,   那么你可以这样做:

extern alias FirstAlias;
extern alias SecondAlias;

using FirstBar = FirstAlias::Foo.Bar;
using SecondBar = SecondAlias::Foo.Bar;
     

然后在代码中使用FirstBar和SecondBar。

     

所以基本上它是一个额外的命名级别 - 你不应该使用它   除非你真的,真的要。这会让很多人感到困惑。   尽量避免首先进入这种情况 - 但是   在那些你无法避免的时候意识到这个解决方案。