C# 如果我有一个指向某个类型的未知指针引用,我如何获得底层的某个类型?

C# 如果我有一个指向某个类型的未知指针引用,我如何获得底层的某个类型?,c#,.net,wcf,pointers,types,C#,.net,Wcf,Pointers,Types,我正在使用以下代码: Type type = info.ParameterType; object activatedType = Activator.CreateInstance(type); arguments[info.Position] = activatedType; 问题是type可能最终成为指向特定类型的指针引用,如System.String&(请注意&),因此如何获取System.String的底层类型 从本质上讲,如何将未知类型解除对其基础类型的引用 if(type.IsBy

我正在使用以下代码:

Type type = info.ParameterType;
object activatedType = Activator.CreateInstance(type);
arguments[info.Position] = activatedType;
问题是
type
可能最终成为指向特定类型的指针引用,如
System.String&
(请注意&),因此如何获取
System.String
的底层类型

从本质上讲,如何将未知类型解除对其基础类型的引用

if(type.IsByRef)
{
   type = type.GetElementType();
}
如果要从其他类型获取引用类型,可以使用:

如果要从其他类型获取引用类型,可以使用:


你知道有没有一种快速的方法可以做完全相反的事情,即创建一个类型引用吗?@Alexandru-是的,你可以使用
MakeByRefType
-我已经更新了答案。但是这会返回一个类型,不是吗?这和希望它是一个指向类型的指针有什么不同吗?我猜,它不应该是一个对象吗?我试过activatedType=Activator.CreateInstance(type.GetElementType().MakeByRefType());但它抱怨没有为此对象定义构造函数,因为它是可枚举类型。@Alexandru-它返回通过引用传递的
string
参数的类型,例如
void somethod(ref string str){…}
。我真的不知道你想要一个“指向类型的指针”是什么意思。你知道有没有一种快速的方法来做完全相反的事情,即创建一个类型引用吗?@Alexandru-是的,你可以使用
MakeByRefType
-我已经更新了答案。但是这会返回一个类型,不是吗?这和希望它是一个指向类型的指针有什么不同吗?我猜,它不应该是一个对象吗?我试过activatedType=Activator.CreateInstance(type.GetElementType().MakeByRefType());但它抱怨没有为此对象定义构造函数,因为它是可枚举类型。@Alexandru-它返回通过引用传递的
string
参数的类型,例如
void somethod(ref string str){…}
。我不太清楚你想要一个“指向类型的指针”是什么意思。
Type stringRefType = typeof(string).MakeByRefType();