被用作類型參數「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
接口?