【发布时间】:2017-06-22 16:47:29
【问题描述】:
我想知道如何在约束方法中获取 typeof(T) 名称,代码如下:
public class SomeItem : ItemBase
{
...
}
我想在这个方法调用中获取类型名称:
Save<SomeItem>(item);
方法是:
public void Save<T>(T item) where T : ItemBase
{
var type1 = typeof(T).Name;
var type2 = typeof(T).FullName;
var type3 = typeof(T).AssemblyQualifiedName;
// this all will return 'ItemBase' type name
}
我想获得“SomeItem”类型名称。谢谢。
解决方案
我应该这样做简单:var typeName = item.GetType().Name;
天哪……
【问题讨论】:
-
我不确定你到底在问什么?第一个变量
type1包含您所要求的内容,那么您的实际问题是什么?如何从方法中返回字符串? -
public void Save
方法对 SomeItem 一无所知,如果您使用约束 where T : SomeItem 那么 typeof 将显示您需要的内容。 -
@Igor 'type1' 返回名称 'ItemBase'。我想获得“SomeItem”类型名称。
-
@Riza:您发布的代码返回
type1的“SomeItem”,而不是“ItemBase”。 -
@MichaelLiu 嗯...我创建了一个用于测试的控制台应用程序,它返回,因为它是 typeof(T) 名称。为什么在我的其他项目中它返回 ItemBase 而不是 SomeItem。
标签: c#