0

いくつかのプロパティを持つ単純なクラスがあり、select別のオブジェクトを返すためにメソッドを公開できるようにしたいと考えています (linq select メソッドのように)。例えば:

class Person
{
  public string Name{get; set;}
  public string Address {get; set;}
  public string City {get; set;}

  public TItem SelectProjection(..);
}

Person p = new Person();
var other = p.SelectProjection(p => new { p.Name, p.City}); 

これは可能ですか?

@@編集

ビジネスロジック用のカスタムクラスがありますが、IList分離されたコードを維持するためだけに公開しています (いいえIQueryable)。したがって、プロジェクションを実行したい場合は、プロパティ文字列にコンマ区切りを入力できます。

BusinessClass.SelectFields = "Name, Surname, City";

ただし、間違ったプロパティ名をキー入力するのは簡単なので、ラムダを好みます。

BusinessClass.SelectField = p => new {p.Name, p.Surname, p.City};
4

2 に答える 2

1

これがあなたの言いたいことであることを願っています。

public T SelectProjection<T>(Func<T> personFunc) 
{
        return personFunc();
}

 Person p = new Person();
 p.Address = "TestAdress";
 var x = p.SelectProjection<dynamic>(() => new {p.Address});

出力:

ここに画像の説明を入力

例 2:

  Person p = new Person();
  p.Address = "TestAdress";
  p.City = "TestCity";
  var x = p.SelectProjection<dynamic>(() => new {p.Address, p.City});

出力:

ここに画像の説明を入力

于 2013-07-29T21:28:33.953 に答える