我在用C#实现接口时遇到了麻烦.我有一个接口IPreferencesWrapper<T>
,其中T
是一个枚举.该接口有一个应该返回可为空的T?
的Get
方法.
界面是这样的:
public interface IPreferencesWrapper<T> where T : Enum
{
T? Get(string preferenceName);
void Set(string preferenceName, T value);
}
我正try 在LanguagePferencesWrapper类中实现此接口:
public class LanguagePreferencesWrapper : IPreferencesWrapper<Language>
{
public Language? Get(string preferenceName)
{
var languageString = Preferences.Get(preferenceName, default(string));
return string.IsNullOrEmpty(languageString) ? null : (Language)Enum.Parse(typeof(Language), languageString);
}
public void Set(string preferenceName, Language language)
{
Preferences.Set(preferenceName, language.ToString());
}
}
但是,我收到一个错误,LanguagePferencesWrapper没有实现接口成员IPferencesWrapper.Get(字符串).错误消息指出,由于LanguagePferencesWrapper.Get(字符串)没有匹配的返回类型Language,因此无法实现IPReferencesWrapper.Get(字符串).
但是'Get'的返回类型是'T?",那么为什么它需要返回类型"Language"