C# 将类作为参数传递以与typeof()一起使用

C# 将类作为参数传递以与typeof()一起使用,c#,C#,我有一个委托功能: myDelegate md = cls => String.Format("blahblah: {0}", typeof(cls).FullName)); 我想将类作为参数cls传递到那里,该参数将在typeof()中使用 示例用法: md(System.String); // => blahblah: System.string 要为输入参数cls定义什么类型,才能将任何类传递到我的函数中?您是否正在寻找类似的东西- Func<Type,string&

我有一个委托功能:

myDelegate md = cls => String.Format("blahblah: {0}", typeof(cls).FullName));
我想将
类作为参数
cls
传递到那里,该参数将在
typeof()中使用

示例用法:

md(System.String); // => blahblah: System.string

要为输入参数
cls
定义什么类型,才能将任何
传递到我的函数中?

您是否正在寻找类似的东西-

Func<Type,string> fn = t => string.Format("blah from - {0}",t.FullName);
Console.WriteLine(fn(typeof(Int32))); //blah from - System.Int32
Func fn=t=>string.Format(“blah from-{0}”,t.FullName);
控制台写入线(fn(typeof(Int32))//blah from-System.Int32

您是否正在寻找类似的产品-

Func<Type,string> fn = t => string.Format("blah from - {0}",t.FullName);
Console.WriteLine(fn(typeof(Int32))); //blah from - System.Int32
Func fn=t=>string.Format(“blah from-{0}”,t.FullName);
控制台写入线(fn(typeof(Int32))//blah from-System.Int32

您要查找的类型是
类型

像这样使用它:

myDelegate md = cls => String.Format("blahblah: {0}", cls.FullName));
md(typeof(System.String));
您还可以使用泛型来获得类似的结果

public static string TypePrinter<T>()
{
    return String.Format("blahblah: {0}", typeof(T).FullName));
}
TypePrinter<System.String>();
公共静态字符串类型打印机()
{
返回String.Format(“blahblah:{0}”,typeof(T.FullName));
}
打字机();

您要查找的类型是
类型

像这样使用它:

myDelegate md = cls => String.Format("blahblah: {0}", cls.FullName));
md(typeof(System.String));
您还可以使用泛型来获得类似的结果

public static string TypePrinter<T>()
{
    return String.Format("blahblah: {0}", typeof(T).FullName));
}
TypePrinter<System.String>();
公共静态字符串类型打印机()
{
返回String.Format(“blahblah:{0}”,typeof(T.FullName));
}
打字机();

您可以传递
类型cls
如果您愿意转移到传递类型,这非常简单-但是
类型的
必须在调用站点使用,而不是在方法中使用。否则,我认为您将陷入困境。
typeof(cls)
可以被
cls.GetType()
替换,这将使您的代码按照您希望的方式编译和打印
cls
类型。我不太明白你到底想实现什么,所以不确定这是否适合你的用例。你可以传递
typecls
如果你愿意转移到传递类型,这是非常简单的-但是
typeof
必须在调用站点使用,而不是在方法中使用。否则,我认为您将陷入困境。
typeof(cls)
可以被
cls.GetType()
替换,这将使您的代码按照您希望的方式编译和打印
cls
类型。我真的不明白你到底想实现什么,所以不确定这是否适合你的用例。第一个解决方案可行,但第二个解决方案类似于
不能在上下文中使用type
我的错,我没有编译就写了它,犯了一个错误。更新了答案并转换为C#5。两个版本现在都可以使用。该死的这些强类型语言,有时需要非常复杂的构造来完成相对简单的任务。至少我学到了一些新东西。谢谢。是的,但是让一个编译器告诉你“狗屎不行”在更大的项目中是很有价值的第一个解决方案是可行的,但第二个解决方案类似于
不能在上下文中使用type
My bad,我没有编译就写了它,犯了一个错误。更新了答案并转换为C#5。两个版本现在都可以使用。该死的这些强类型语言,有时需要非常复杂的构造来完成相对简单的任务。至少我学到了一些新东西。谢谢。是的,但是让一个编译器告诉你“狗屎不行”在更大的项目中是很有价值的这正是我想要的。我无法直接通过
,我必须通过
类型
,这是
typeof()
调用的结果,该调用不太枯燥,但价格合理。这正是我想要的。我无法直接通过
,我必须通过
类型
,这是
typeof()
调用的结果,该调用不太枯燥,但价格合理。