4
この質問は重複していると仮定します。 しかし、私はこの質問を見つけることができませんでした明示的ではなく総称パラメータでコンストラクタを呼び出す
私はジェネリッククラスをインスタンス化したいです。しかし、 明示的なパラメータを持つコンストラクタがあり、また、指定された型のためにジェネリックコンストラクタにそのパラメータがある場合、明示的なパラメータを持つコンストラクタが使用されます。
例
class Program
{
static void Main(string[] args)
{
Example<string> test = new Example<string>("test");
test.Print();//Prints test2
}
}
class Example<T>
{
private object Value;
public Example(T value1)
{
this.Value = value1 + "1";
}
public Example(string value2)
{
this.Value = value2 + "2";
}
public void Print()
{
Console.WriteLine(Value as string);
}
}
は、一般的なコンストラクタを呼び出すための方法はありますか?
Example<string> test = new Example<string>(value1: "test");
ここで重要なトリックは、あなたが現在持っているように異なるパラメータ名を持つことがあるので、パラメータ名から右のコンストラクタをマップします:
はい。パラメータのないクラスに3番目のコンストラクタを追加します。 – jdweng
私は本当にC#の人ではありませんが、コンストラクタで 'explicit'キーワードを試してみるとどうなりますか?私の試みは 'string'コンストラクタになります。 – aardvarkk