リンクの怠惰な方法で相続のクラス名を取得します。私が見つけたものは何も役立ちません。私は、基本クラスの静的メソッドで相続のクラス名を取得しようとした <a href="https://dotnetfiddle.net/4QTGx3" rel="nofollow noreferrer">https://dotnetfiddle.net/4QTGx3</a></p> <p>C#のフィドルにここでは、基本クラス
public class Worker
{
public string Id1 {get; set;}
public string Id2 {get; set;}
public string Id3 {get; set;}
}
public interface IModel
{
}
public class Model1: IModel
{
}
public class Model2: IModel
{
}
public class ModelActor <TModel> where TModel: IModel
{
private Lazy<Worker> _worker = new Lazy<Worker>(
() => new Worker()
{
Id1 = new StackFrame().GetMethod().DeclaringType.Name,
Id2 = MethodBase.GetCurrentMethod().DeclaringType.Name,
Id3 = typeof(ModelActor <TModel>).Name
}
);
public Worker Worker
{
get
{
return _worker.Value;
}
}
}
public class ModelActor1: ModelActor<Model1>
{
}
public class ModelActor2: ModelActor<Model2>
{
}
public static void Main()
{
Console.WriteLine("Id1: {0} {1}", new ModelActor1().Worker.Id1, new ModelActor2().Worker.Id1);
Console.WriteLine("Id2: {0} {1}", new ModelActor1().Worker.Id2, new ModelActor2().Worker.Id2);
Console.WriteLine("Id3: {0} {1}", new ModelActor1().Worker.Id3, new ModelActor2().Worker.Id3);
Console.WriteLine("Want to get: ModelActor1 ModelActor2");
}
「メイン」以外は、ここでは「静的」は表示されません。 (私はそれが関係しているとは確信していませんが、タイトル/初期の物語の中にたくさん作ったようです) –
@Damien_The_Unbelieverレイジーコンストラクタのコンテンツは、クラス内の実装を含むことはできません。 so ... static –