C# の Generics の文法がワケワカメ
こんなんでベースクラスの方がアクセシビリティが低いと怒られる。
class HogeDocument { } public abstract class Stringizer<Type> { public abstract string Stringize(Type target); } public class HogeDocumentListStringizer : Stringizer<HogeDocument> { public override string Stringize(HogeDocument target) { return "<<" + target.ToString() + ">>"; } }
なんでだ?
ちなみに Generic じゃなくすれば通る
class HogeDocument { } public abstract class Stringizer { public abstract string Stringize(object target); } public class HogeDocumentListStringizer : Stringizer { public override string Stringize(object target) { string result = ""; HogeDocument hogeDocument = target as HogeDocument; if (hogeDocument != null) { result = "<<" + target.ToString() + ">>"; } return result; } }
C++ Template の荒々しさが懐かしいw