明確にするために、小さな例:
public class Book
{
[MyAttrib(isListed = true)]
public string Name;
[MyAttrib(isListed = false)]
public DateTime ReleaseDate;
[MyAttrib(isListed = true)]
public int PagesNumber;
[MyAttrib(isListed = false)]
public float Price;
}
isListed
問題は、boolパラメータが設定さtrue
れているプロパティのみを取得するにはどうすればよいMyAttrib
ですか?
これは私が得たものです:
PropertyInfo[] myProps = myBookInstance.
GetType().
GetProperties().
Where(x => (x.GetCustomAttributes(typeof(MyAttrib), false).Length > 0)).ToArray();
myProps
からすべてのプロパティを取得しましたが、パラメータがfalseを返しBook
たときに、それらを除外する方法がわかりません。isListed
foreach (PropertyInfo prop in myProps)
{
object[] attribs = myProps.GetCustomAttributes(false);
foreach (object att in attribs)
{
MyAttrib myAtt = att as MyAttrib;
if (myAtt != null)
{
if (myAtt.isListed.Equals(false))
{
// if is true, should I add this property to another PropertyInfo[]?
// is there any way to filter?
}
}
}
}
どんな提案も非常に高く評価されます。前もって感謝します。