既知の属性を使用してクラスインスタンスを作成するにはどうすればよいですか? この属性は列挙型の値です。C#クラス属性でクラスインスタンスを作成する方法
public enum MyEnum
{
Value1,
Value2
}
class MyAttribute : Attribute... //attribute definition class
{ //uses the enum}
//Main
abstract class MyMain ...
{
public static MyMain CreateClass
{
MyMain newInheritedClass = ?
}
}
[MyAttribute(MyEnum.Value1)]
class MyClassA : MyMain ...
[MyAttribute(MyEnum.Value2)]
class MyClassB : MyMain ...
[Reflection](https://msdn.microsoft.com/en-us/library/mt656691.aspx)を使用することができますが、実際には何を達成しようとしていますか?おそらくこれを行うにはより良い方法があります。 – InBetween
私はenum値を格納しており、問題の列挙型に基づいて対応するクラスを作成する必要があります。したがって、MyEnum.Value1でコンストラクタを呼び出すと、MyClassAの新しいインスタンスが返されます。 – KSav
はい、それはあなたの質問から明らかです。しかし、なぜこれを行う必要がありますか?このデザインはあなたのものですか?あなたは 'MyMain'と派生クラスを管理していますか、それともサードパーティかコードで変更できないのですか? – InBetween