XMLから値を取得するヘルパー関数があります。これはint型や文字列型などの値型で正常に動作します。私はまた、彼らのコンストラクタのパラメータとしてのXPathNavigatorを取るいくつかのクラスを持っていると私は、次のような何かをしたいと思います:値と参照型オブジェクトを返すことができる汎用関数
意志はありますが、方法はありpublic static void SelectSingleNodeSafe<T>(XPathNavigator nav, string pos, out T ret, T def)
{
XPathNavigator node = nav.SelectSingleNode(pos);
if (node != null)
if (typeof(T).IsSubclassOf(XMLConstructible))
ret = new T(node);// this won't compile
else
ret = (T)node.ValueAs(typeof(T));//this works for my use cases
else
ret = def;
}
?
文字列は値の種類ではありません。 –
問題は '新しいT(ノード)'が不可能だということです。汎用関数は、パラメータ化された型のデフォルトコンストラクタのみを呼び出すことができます。 – Gabe
可能な複製[C#Generic new()コンストラクタの問題](http://stackoverflow.com/questions/840261/c-generic-new-constructor-problem) – Donnie