为了账号安全,请及时绑定邮箱和手机立即绑定

根据通用接口获取类属性

根据通用接口获取类属性

C#
泛舟湖上清波郎朗 2021-06-23 17:01:16
可以说我有这个:public interface IMyInterface<T>{}public class MyClass{    public IMyInterface<Foo> Foos {get; set;}    public IMyInterface<Bar> Bars {get; set;}}我想要一个这样的方法MyClass.Interfaces<T>()哪个将返回 MyClass.Foos 或 MyClass.Bars 取决于 T 值。我怎么做?这与 EF 的工作方式非常相似。
查看完整描述

2 回答

?
函数式编程

TA贡献1807条经验 获得超9个赞

它需要一些管道和铸造,但你可以用字典来做到这一点:


public interface IMyInterface<T> {

}

public class Foo { }

public class Bar { }


public class MyClass {


    Dictionary<Type, object> myInterfaces = new Dictionary<Type, object>();


    public IMyInterface<Foo> Foos {

        get { return (IMyInterface<Foo>)myInterfaces[typeof(Foo)]; }

        set { myInterfaces[typeof(Foo)] = value; }

    }

    public IMyInterface<Bar> Bars {

        get { return (IMyInterface<Bar>)myInterfaces[typeof(Bar)]; }

        set { myInterfaces[typeof(Bar)] = value; }

    }


    public IMyInterface<T> Interfaces<T>() {

        return (IMyInterface<T>)myInterfaces[typeof(T)];

    }


}


查看完整回答
反对 回复 2021-06-26
  • 2 回答
  • 0 关注
  • 130 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信