我有一个在通用响应中返回派生类的函数,该函数的签名对于某些派生类是公用的:
防御等级:
public class BaseClass
{
int {get;set;}
}
public class DerivedClass : BaseClass
{
int b {get;set;}
}
基类中的功能
public class BaseRepository
{
public virtual GenericClass<BaseClass> Func()
{
return null;
}
}
派生类中的功能:
public class Repository : BaseRepository
{
public override GenericClass<BaseClass> Func()
{
var response = new GenericClass<DerivedClass> ();
//TODO
return response;
}
}
我收到此错误消息:
cannot implicitly convert type 'GenericClass<DerivedClass>' to
'GenericClass<DerivedClass>'
答案 0 :(得分:0)
不允许您使用不同的通用参数来映射GenericClass。
通用类不知道如何转换它们。
$ipfile = "ips.txt";
$ips = explode("\n",file_get_contents($ipfile));
$isban = 0;
foreach($ips as $ip) {
$ip = explode(" ",$ip,2);
if($_SERVER['REMOTE_ADDR'] == $ip['0']) {
$isban++;
}
}
if(!empty($isban))
{
die("IP IS BANNED!");
}
else
{
$ips[] = $_SERVER['REMOTE_ADDR']." ".date("d/m/y");
$ips = implode("\n",$ips);
file_put_contents($ipfile,$ips);
header('Content-Type: text/html; charset=UTF-8');
header('Location: http://www.google.com/');
exit;
}
答案 1 :(得分:0)
正如kara所提到的,您不能将GenericClasses映射为具有不同的泛型参数。 但是您可以执行类似于以下示例的操作。
假设您的GenericClass看起来像:
public class GenericClass<T>
{
T myProperty { get; set; }
public GenericClass(T myProperty)
{
this.myProperty = myProperty;
}
}
您在DerivedClass中的Func看起来像
public override GenericClass<BaseClass> Func()
{
var response = new GenericClass<BaseClass>(this);
//TODO
return response;
}