Класс не реализует интерфейсный член при использовании обобщений
У меня есть общий интерфейс, определенный следующим образом:
interface INewRegionBoarding<T> where T: class
{
bool Create(T objectName);
bool ValidateData(T objectName);
}
Затем у меня есть класс, реализующий это:
public class ESafeActionService<T>: INewRegionBoarding<T>
{
public bool ValidateData(EsafeActons eSafe)
{
if (String.IsNullOrEmpty(eSafe.Corporation)) return false;
if (String.IsNullOrEmpty(eSafe.Region))
{
return false;
}
else if (eSafe.Region.Length != 2)
{
return false;
}
return true;
}
public bool Create(EsafeActons eSafe)
{
return eSafe.Create(eSafe.Corporation, eSafe.Region, eSafe.PortfolioName);
}
}
При его создании у меня возникает следующая ошибка:
'ESafeActionService<EsafeActions>' does not implement interface member INewRegionBoarding<EsafeActions>.ValidateData(EsafeActions)'
Это ESafeAction
определение класса:
открытый класс EsafeActons {
private string corporation;
private string region;
private string portfolioName;
public EsafeActons(string corporation, string region, string portfolioName)
{
this.corporation = corporation;
this.region = region;
this.portfolioName = portfolioName;
}
public string Corporation
{
get { return this.corporation; }
set { this.corporation = value; }
}
public string Region
{
get{return this.corporation;}
set { this.region = value; }
}
public string PortfolioName
{
get { return this.corporation; }
set { this.portfolioName = value; }
}
public bool Create(string corporation, string region, string portfolioName)
{
//call stored proc
return true;
}
}
Я не совсем уверен, что я делаю неправильно.
Спасибо
1 ответ
Я не совсем уверен, что я делаю не так
Вы сохраняете класс универсальным, но реализуете интерфейс с определенным типом. Измените определение своего класса на:
public class ESafeActionService: INewRegionBoarding<EsafeActons>
{