我想知道是否可以执行这样的方法,而不会在返回时进行丑陋的转换?
public static AbstractFileReader<T> GetReader<T>(string filename, T data)
{
if(data is string)
{
return GetTextFileReader(filename) as AbstractFileReader<T>;
}
else if(data is byte[])
{
return GetBytesFileReader(filename) as AbstractFileReader<T>;
}
else
{
Debug.LogError("There is no reader for that type of data : " + data.GetType().ToString());
return null;
}
}
为了简单起见,这是我的架构:
> AbstractFileReader<T> => The generic base class
> AbstractTextFileReader : AbstractFileReader<string> => an abstract class
> StandaloneTextFileReader : AbstractTextFileReader => the final implementation
我的第一个想法是采用这样的方法:
public static AbstractFileReader<T> GetReader<T>(string filename, T data)
{
if(data is string)
{
return StandaloneTextFileReader(filename);
}
else if(data is byte[])
{
return StandaloneBytesFileReader(filename);
}
else
{
Debug.LogError("There is no reader for that type of data : " + data.GetType().ToString());
return null;
}
}
但我的编译器似乎不接受它。有什么办法可以实现这一点吗?谢谢
元芳怎么了