は私が達成しようとしているもののサンプルです:基本クラスの静的メソッドから派生クラスの値にアクセスするにはどうすればよいですか?ここで
基本的にpublic class BaseClass<T>
{
public static T GetByID(int ID)
{
// Need database name here that is determined at design time in the derived class.
var databaseName = "";
// do some stuff involving database name that gets me object by ID here.
return default(T);
}
}
public class DerivedClass : BaseClass<DerivedClass>
{
private string DatabaseName { get; set; }
}
、どのように私は、基本クラスの静的GetByID方法で導出「データベース名」にアクセスしますか?
編集:これを投稿した後、もう一度試しました。私は早い時期にアトリビュートで遊んでいましたが、失敗しましたが、私の脳は薄暗いと思います。もう一度試してみて、テストを実行したところ、それは機能しています。ここに更新されたサンプルがあります。派生クラスに
public class BaseClass<T>
{
public static T GetByID(int ID)
{
// Need database name here that is determined at design time in the derived class.
var databaseName = ((DatabaseAttribute)typeof(T).GetCustomAttributes(typeof(DatabaseAttribute), true).First()).DatabaseName;
// do some stuff involving database name that gets me object by ID here.
return default(T);
}
}
[Database("MyDatabase")]
public class DerivedClass : BaseClass<DerivedClass>
{
}
public class DatabaseAttribute : Attribute
{
public DatabaseAttribute(string databaseName)
{
DatabaseName = databaseName;
}
public string DatabaseName { get; set; }
}
静的イニシャライザにデータベース名の設定を追加する方がよいでしょうか? –