Nil*_*Das 10 c# reflection types metadata
我正在编写一个工具,我需要反思方法,如果方法的参数是复杂的类型,那么我需要某些类型的操作,如实例化它们等.
现在我IsPrimitive在Type变量中看到了属性.但是,它显示string并且decimal作为复杂类型,在技术上不是不正确的.但是我真正想要的是能够将开发人员创建的类类型与系统定义的数据类型区分开来.
有什么方法可以做到这一点吗?
decimal 当然是一个"复杂的类型"; C#可能有一个关键字,但它不是CLI原语.字符串,你可以争论任何一种方式 - 它实际上是一种自身的类型(不确定的大小等 - 唯一可以远程比较的是数组).
然而; 根本没有办法确定你想要的东西.您可以做的最好的事情是检查已知的系统组件(或者可能是签名密钥).毕竟,我可以编写一个名为System.something.dllor 的程序集Microsoft.something.dll,并在System.Foo.Bar命名空间中使用类型(当然,这也取决于你想要的偏执程度).
可能更容易让开发者明确地标记他们想要以特定方式处理的类型 - 通过属性或接口.
小智 5
我进行搜索时遇到了这个线程。我本人正在寻找解决方案,发现您还可以检查名称空间以查看属性是否已在您自己的名称空间中定义。
if (property.PropertyType.Namespace.StartsWith("MyApp.MyNamespace"))
{
// logic for properties in MyNamespace
}
Run Code Online (Sandbox Code Playgroud)
希望这对某人有帮助。
| 归档时间: |
|
| 查看次数: |
6161 次 |
| 最近记录: |