gpt4 book ai didi

c# - 从仅在方法中设置类型的接口(interface)获取具有泛型类型的对象

转载 作者:太空宇宙 更新时间:2023-11-03 11:15:39 26 4
gpt4 key购买 nike

这行不通:

public interface IServerFuncs
{
Table<T> getTable<T>() where T : MasterClass;
//*cut* other stuff here
}

public class DefaultFuncs<T> : IServerFuncs where T : MasterClass
{
Table<T> table;

public DefaultFuncs(Table<T> table)
{
this.table = table;
}

public Table<T> getTable()
{
return table;
}
}

它说 DefaultFuncs<T>' does not implement interface member 'IServerFuncs.getTable<T>()'

但我也做不到:

public Table<T> getTable<T>() where T:MasterClass
{
return table;
}

它说 Error: Cannot implicitly convert type 'MySQLCache.Table<T> .我猜方法中的 T 与 DefaultFuncs<T> 冲突所以我尝试了:

public Table<T2> getTable<T2>() where T2:MasterClass
{
return table;
}

但它给出了另一个错误:Error Cannot implicitly convert type 'Table<T>' to 'Table<T2>'

我需要在不向 IServerFuncs 添加通用类型的情况下让它工作( IServerFuncs<T> ).. 有什么想法吗?

最佳答案

你可以做到

public Table<T2> getTable<T2>() where T2:MasterClass
{
return (Table<T2>)(object)table;
}

如果你知道 T 和 T2 总是相同的类型。如果不是,您将得到一个运行时异常。

关于c# - 从仅在方法中设置类型的接口(interface)获取具有泛型类型的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12735334/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com