c# - 如何创建具有未在类中指定的成员的对象?

标签 c# asp.net-mvc class oop object

下图显示了 RouteCollectionExtensions.Mapproute 方法的 MSDN 引用。

该方法有 1 个名为 defaults 的参数,它是一个对象 类型。

MSDN Reference

下图显示了 Visual Studio 中 ASP.NET MVC 项目中不包含错误的一行代码(加框)。

enter image description here

代码创建一个新对象并将其作为参数传递给 MapRoute 方法。 该对象包含成员,即 controlleractionid

但是,该对象是从 System.Object 类创建的。 System.Object 类中没有指定此类成员。

如何创建对象,因为它没有具有这些成员的类?

最佳答案

您需要在此了解各种不同的想法。

最重要的是,有一个 anonymous type 的想法.看看这个:

var x = new { Name = "Jon", Location = "Reading" };

创建了一个匿名类型的实例,并将生成的引用分配给变量x。在编译时,编译器将生成一个类型,它实际上有一个名称,但您不能引用它。

现在在这种情况下,x 将被强类型化为“未命名”类型 - 但也可以使用:

object x = new { Name = "Jon", Location = "Reading" };

毕竟,我们只是在创建一个对象,每个类类型都与object兼容,就像我们可以这样写:

object x = new StringBuilder();

您提供的示例代码非常相似,只是它使用值作为方法调用的参数,而不是将其分配给变量。

MapRoute 方法使用反射来确定匿名类型的属性和传入的实例中存储的值。

关于c# - 如何创建具有未在类中指定的成员的对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34087643/

相关文章:

c# - (C#) 如何获取屏幕的点与像素关系?

asp.net - MVC 应用程序中的 Aspx 母版页

Java公共(public)变量多个类

c++ - 在 C++ 中,我无法掌握指针和类

c++ - C++ IDE Netbeans 或 Eclipse 不支持类继承吗?

javascript - 使用 jQuery Ajax 将单个对象传递到 MVC Controller 方法

c# - 使用 asp.net 样板和 Automapper 进行自定义映射

c# - 如何配置注解 [Authorize] 以使用枚举?

c# - DataSets to POCOs - 关于 DAL 架构的查询

c# - 如何将匿名类型强制转换为指定的强制转换以获取其所有属性