被用作类型参数“T”我有以下类类型“XXX”不能在通用类型或方法
public interface IHtmlString
{
string ToHtmlString();
}
public class BaseClass<T> where T : BaseClass<T>, IHtmlString
{
public BaseClass()
{
}
public T Method1()
{
return (T)this;
}
public T Method2(string key, object value)
{
return (T)this;
}
public string ToHtmlString()
{
return ToString();
}
}
public class DerivedClassA : BaseClass<DerivedClassA>
{
public DerivedClassA MethodSpecificToClassA()
{
return this;
}
public override string ToString()
{
return "<div/>";
}
}
public class DerivedClassB : BaseClass<DerivedClassB>
{
public DerivedClassB MethodSpecificToClassB()
{
return this;
}
public override string ToString()
{
return "<span/>";
}
}
注意,该方法返回this
实例,这样我可以链的方法,如下面
var a = new DerivedClassA()
.Method1()
.MethodSpecificToClassA()
.ToHtmlString();
然而即时得到编译时错误
严重性代码说明项目文件李ne抑制状态 错误CS0311类型'DerivedClassA'不能为 ,用作通用类型或方法 'BaseClass'中的类型参数'T'。没有从 'DerivedClassA'到 'System.Web.IHtmlString'的隐式引用转换。 WebApplication5 C:\ MyProjects下\ WebApplication5 \ WebApplication5 \型号\ BaseBuilder.cs 27主动
我如何重构这些类,所以我有只基类IHtmlString
接口?