当前位置:  开发笔记 > 编程语言 > 正文

关于索引器和/或泛型的问题

如何解决《关于索引器和/或泛型的问题》经验,为你挑选了1个好方法。



1> Daniel Earwi..:

您需要声明具有索引器属性的接口,使用该接口作为约束,并且类型参数类需要实现该接口以满足约束.

由于您无法控制要使用的类,因此无效.

另一种方法是使Indexer类将get/set操作作为单独的参数:

public class Indexer {

    private Func getter;        
    private Action setter;

    public object this[int index] 
    {
        get { return getter(index); }
        set { setter(index, value); }
    }

    public Indexer(Func g, Action s) 
    {
        getter = g;
        setter = s;
    }
}

public static class IndexerExtensions
{
    public static Indexer ToIndexer(this DataRow row)
    {
        return new Indexer(n => row[n], (n, v) => row[n] = v);
    }

    public static Indexer ToIndexer(this IDataReader row)
    {
        return new Indexer(n => row[n], (n, v) => row[n] = v);
    }
}

然后你可以这样做:

DataRow row = null;
IDataReader reader = null;
var ind1 = row.ToIndexer();
var ind2 = reader.ToIndexer();
var val1 = ind1[0];
var val2 = ind1[0];

推荐阅读
有风吹过best
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有