は、私は前にこれをやったことがない、と私はそれが壊れることを具体的な理由を考えることはできませんが、私は次のように変数を使用することが有効であることを確認したいと思います:LINQ文内の呼び出しで変数を使用するのは安全ですか?
void Main()
{
var types = new [] { typeof(A), typeof(B) };
bool b = false;
var q = from type in types
from property in type.GetProperties()
let propertyName = GetName(property, out b)
select new {
TypeName = type.Name,
PropertyName = propertyName,
PropertyType = property.PropertyType.Name,
IsNullable = b
};
q.Dump();
}
private string GetName(PropertyInfo property, out bool isNullable)
{
string typeName;
isNullable = false;
var type = property.PropertyType;
if (type.IsGenericType && type.GetGenericTypeDefinition() == typeof(Nullable<>))
{
isNullable = true;
typeName = type.GetGenericArguments().First().Name;
}
else
{
typeName = property.Name;
}
return typeName;
}
これは最悪の方法と考えられます。 – asawyer
@asawyer、特に、あなたはそれを何と言うのですか? – sblom
@asawyerとは対照的に、何ですか? –