この質問が何度も聞かれていることは知っていますが、十分な答えが見つからないようです。知りたいことを明確にするために、これを 2 つの質問に分けます。
インターフェイスが静的メソッド シグネチャを持てないのはなぜですか? なぜ世界でこれをやりたいのかを尋ねる答えのないものを先取りしようとし
GetDbConnectionType()
ます:SqliteCodeGenerator
MssqlCodeGenerator
interface ICodeGenerator { // this is the method I would like to be static: string GetDbConnectionType(); } abstract class CodeGeneratorBase : ICodeGenerator { public abstract string GetDbConnectionType(); public void GenerateSomeCode(StringBuilder s) { s.AppendLine("var foo = new " + GetDbConnectionType() + "();"); } } class SqliteCodeGenerator : CodeGeneratorBase { public override string GetDbConnectionType() { return "SQLiteConnection"; } } class MssqlCodeGenerator : CodeGeneratorBase { public override string GetDbConnectionType() { return "SqlConnection"; } }
一方、これはこの 2 番目の質問の問題ですが、前述の目標を達成するための適切な代替手段を知っている場合は、ぜひ...