将类型作为参数传递
Passing type as a parameter
我有一个方法,它获取某个继承类型的对象并在内部数据结构中搜索它...
public (bool,Point) GetItemPosition(IMyBaseType type)
{
...
}
所以使用上面的方法会是这样的:
var (isFound, location) = myDataContainer.GetItemPosition(myDataItem);
在数据结构class中,我想利用搜索方法。但是,我不想创建所需数据项的实例(因为这有开销)——我只想将 class 类型作为值传递。目前,我正在创建一个数据项实例...
public bool AddTarget()
{
var (hasTarget, location) = GetItemPosition(new SomeDataItem().GetType() as IMyBaseType, 0, 0);
...
}
如何传递 class 类型本身?
使用泛型:
public (bool,Point) GetItemPosition<T>() where T: IMyBaseType
{
...
}
在该方法中,您会将传入的类型称为 T
。例如,您可以检查 object obj
是否属于 T
类型 is
:
if (obj is T) { ... }
来电者看起来像:
GetItemPosition<SomeDataItem>()
我有一个方法,它获取某个继承类型的对象并在内部数据结构中搜索它...
public (bool,Point) GetItemPosition(IMyBaseType type)
{
...
}
所以使用上面的方法会是这样的:
var (isFound, location) = myDataContainer.GetItemPosition(myDataItem);
在数据结构class中,我想利用搜索方法。但是,我不想创建所需数据项的实例(因为这有开销)——我只想将 class 类型作为值传递。目前,我正在创建一个数据项实例...
public bool AddTarget()
{
var (hasTarget, location) = GetItemPosition(new SomeDataItem().GetType() as IMyBaseType, 0, 0);
...
}
如何传递 class 类型本身?
使用泛型:
public (bool,Point) GetItemPosition<T>() where T: IMyBaseType
{
...
}
在该方法中,您会将传入的类型称为 T
。例如,您可以检查 object obj
是否属于 T
类型 is
:
if (obj is T) { ... }
来电者看起来像:
GetItemPosition<SomeDataItem>()