如何将类型而不是实例传递给 C# 中的函数?
我尝试使用反射来枚举类字段和方法,以便在 Web 应用程序中实现一些自动化。我也将其抽象化,以便我可以通过任何课程。
有没有一种方法可以将类型直接传递给要枚举的函数而不是类型的实例?
我希望调用方看起来像这样:
var m = new MyClass(AClassOfSomeTypeIDefined);
我想避免创建实例,因为这会误导任何可能使用该类的人(因为该实例不直接使用)。
I am attempting to use reflection to enumerate class fields and methods in order to do some automation in a web application. I am also abstracting this so that I could pass in any class.
Is there a way I could somehow pass in the type directly to a function to enumerate on rather than an instance of the type?
I would like the caller side to look like this:
var m = new MyClass(AClassOfSomeTypeIDefined);
I would like to avoid creating an instance as that is misleading to anyone who might use the class (as the instance isn't directly used).
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
使用 C#
typeof
关键字和要传递的数据类型。正如您所知,
System.Type
是反射的基石之一,因此请使用它来运行。其他说明
根据您想要对该类型执行的操作,以下外围设备详细信息可能有用。
要在运行时创建
Type
实例而不在编译时使用new
关键字,请使用System.Activator
类。例如Call it with C#
typeof
keyword and the data type you want to pass.System.Type
is one of the cornerstones of reflection as you already know, so run with it.Other notes
Depending on what you want to do with the type, the following peripheral details might be useful.
To create an instance of a
Type
at runtime without having used thenew
keyword at compile time, use theSystem.Activator
class. e.g.是的,只需使用
Type
你的班级。获取类型有两种基本方法:如果您只在运行时知道类型(在反射中更常见),则可以使用
GetType()
;如果您知道类型,则可以使用typeof()
在编译时就已经知道类型了。在你的例子中,这将是
yes just use the
Type
of your class. There's two basic ways to get the type:You can use
GetType()
if you only know the type at runtime (more common with reflection), ortypeof()
if you know the type at compile time already.In your example this would be i.e.
您可以像传递任何其他参数一样传递
Type
对象。称其为:
You can pass a
Type
object just like any other parameter.The call it: