【发布时间】:2021-08-11 10:36:49
【问题描述】:
我有一个系统使用CallerLineNumber 属性来排序方法,以便我稍后根据它们的声明顺序检索它们。
这很好用,但它不支持在不同文件之间拆分的部分类。
我不关心在我的系统中支持部分类,但是如果有人试图在我的系统中使用部分类,我想发出一个异常,所以基本上,我需要一种方法来知道一个类是否被声明为部分类,使用反射我想。
我的一个想法是使用CallerFilePath 属性来检查脚本的属性是否都来自同一个文件,但我想知道是否有更简单的方法。
谢谢。
【问题讨论】:
-
我不知道更简单的方法。如果
CallerLineNumber和CallerFilePath属性适用于您的逻辑,也许您可以考虑同时使用它们来正确支持部分类? -
" 我需要一种方法来知道一个类是否被声明为部分" -- 一旦编译,类的不同部分来自不同源文件的唯一指示(即
partial声明)是源文件的名称,可以在[CallerFilePath]属性中设置或在 .pdb 数据中找到。就程序集元数据而言,这是一回事。这在副本中进行了概述,这也解决了您对基于声明顺序的排序方法的更广泛关注。
标签: c#