将类型作为参数传递

时间:2021-07-15 05:32:40

标签: c# .net-core types method-parameters

我有一个方法,它采用某种继承类型的对象并在内部数据结构中搜索它...

public (bool,Point) GetItemPosition(IMyBaseType type)
{
    ...
}

所以上面方法的使用应该是这样的:

var (isFound, location) = myDataContainer.GetItemPosition(myDataItem);

在数据结构类中,我想利用搜索方法。但是,我不想创建所需数据项的实例(因为它有开销)——我只想将类类型作为值传递。目前,我正在创建一个数据项实例...

public bool AddTarget()
{
    var (hasTarget, location) = GetItemPosition(new SomeDataItem().GetType() as IMyBaseType, 0, 0);
    ...
}

如何传递类类型本身?

1 个答案:

答案 0 :(得分:0)

使用泛型:

public (bool,Point) GetItemPosition<T>() where T: IMyBaseType
{
    ...
}

在该方法中,您会将传入的类型称为 T。例如,您可以检查 object obj 是否属于 T 类型并带有 is

if (obj is T) { ... }

调用者看起来像:

GetItemPosition<SomeDataItem>()