非常に単純なジェネリック コンストラクター メソッドがあります。
public T Instance<T, TT>(TT parms) where T : class
{
return (T)Activator.CreateInstance(typeof(T), new[] { parms });
}
次のようなメソッドを呼び出すと:
Instance<MyClass, string>("SomeStringValue").Customers.Where(x => x.Id == Id).Select(p => blah..blah...blah;
「System.MissingMethodException: 型「MyClass」のコンストラクターが見つかりません。System.RuntimeType.CreateInstanceImpl (BindingFlags bindingAttr、バインダー バインダー、オブジェクト [] 引数、CultureInfo カルチャで...'
bindingflags などを追加しようとしましたが、うまくいきませんでした。
基本的に、引数を使用してオブジェクトをインスタンス化しようとしています。問題なくオブジェクトを明示的に宣言できます。
var myObj = new MyClass("SomeStringValue");
しかし、ジェネリック コンストラクターを使用する必要があります。
私が欠けているものを誰かが明確にすることができますか?
EDIT 完全なプログラム (簡略化)。
public abstract class A
{
public T Instance<T, TT>(TT parms) where T : class
{
return (T)Activator.CreateInstance(typeof(T), new[] { parms });
}
}
public class B
{
public B(string someValue)
{
var myValue = someValue;
}
}
public class C
{
public void DoStuff()
{
var x = Instance<B, string>("SomeStringValue");
}
}
私がやろうとしていることです。