私は以下の方法で質問がほとんどありません。エキスパートが構造を理解するのを手助けすることができますか?なぜ私はエラーを受けていますか?"型 '文字列'はnullableでない一般的なメソッドでなければなりません"
protected static T GetValue<T>(XElement group, string name, T default) where T : struct
{
//Removed some code for better view
XAttribute setting = group.Attribute(name);
return setting == null ? default: (T)Enum.Parse(typeof(T), setting.Value);
}
私の質問は、およそ次のとおりです。
私は、XML要素を取得nameパラメータで指定された属性を検索した場合は、それはデフォルト値を返すXMLで見つけることができませんされます。このメソッドを持っていますこのメソッドで使用されるジェネリック型私は文字列変数に、このメソッドを使用しようとすると、私は次のエラーを取得する:
string test = GetValue(element, "search", "default value"); The type 'string' must be a non-nullable value type in order to use it as parameter 'T' in the generic type or method 'GetValue(XElement, string, T)'
は何Tこの方法、それは私がそのエラーを取得しています問題ですか? T:structの意味はどこですか?私はGetValueとしてこれを使用しようとしましたが、それもうまくいきませんでした...
何か助けが本当に歓迎です!ありがとう!
'T:struct' stringは構造体ではありません – Jonesopolis
' string'は 'struct'ではありません。このメソッドは列挙型でのみ使用されるように見えます。あなたがしたいものに対しては 'string text =(string)element.Attribute(" search ")?? "デフォルト値"; ' – juharr
[Constraints on Type Parameters(C#プログラミングガイド)](https://msdn.microsoft.com/en-us/library/d5x73970.aspx) – thehennyy