0

次のような以前の開発者によって内部的に開発されたこのライブラリを取得しています

public MyClass<T>
{
    public Dictionary<String, Func<T,String>> AttributesUsing{ get; set;}
    public void  setAttributesUsing(Action<Dictionary<String, Func<T, String>>> t)
    {
                AttributesUsing = new Dictionary<String, Func<T, String>>();
                t(AttributesUsing);

    }

}

カミソリビューでは、コンポーネントを次のように呼び出すことができます

....
....

.setAttributesUsing(attr =>
{
    attr.Add("width", item => (item.ActualDays * 19).ToString());
});

....

問題は、彼がまだ完成していないバックエンド コードにあります。

これは関連する次の部分です

foreach(T item in DataSource)
{
      MyClass<T> m = new MyClass<T>()
      m.AttributesUsing(???????)  <---- what do i pass in here?
}

私はそのようにTオブジェクトを渡そうとしました

m.AttributesUsing(item) 

しかし、明らかにそれはいけません。Dictionary オブジェクトであるため、「メソッドのように使用することはできません」を取得します。少し混乱しています。

ありがとう

4

2 に答える 2

0

デリゲート機能を使用できますか?

このようなものは、私があなたが望む/必要なものを手に入れていると思います.

public delegate string readDictionary(T obj)
{
    //do some stuff, read attributes
    //return object attributes
}

そうすれば、オブジェクトを(ちょっと)渡さず、そこから返された属性を attributesUsing() で取得できます

于 2013-08-08T15:35:43.100 に答える