gpt4 book ai didi

C# 动态调用泛型方法

转载 作者:行者123 更新时间:2023-12-05 08:15:10 24 4
gpt4 key购买 nike

<分区>

给定以下接口(interface):

interface IEntity
{
int Id{get;}
}

interface IPerson : IEntity
{
string Name{get;}
int Age{get;}
}

interface ITeacher : IPerson
{
string StaffId{get;}
}

interface IStudent : IPerson
{
string StudentId{get;}
string Courses{get;}
}

interface IRepository
{
T Get<T>(int id) where T : IEntity
}

我的命名空间中有以下类

public class EntityBase() : IEntity
{
int Id{get;set;}
}
public class Teacher : EntityBase, ITeacher{}
public class Sudent : EntityBase, IStudent{}

目前我正在实现这个 IRepository 如下:

class Repository: IRepository
{
IDataContext Context{get;set;}

T Get<T>(int id) where T : EntityBase
{
if(typeof(T) == typeof(Teacher))
return Context.Get<ITeacher>(id);
if(typeof(T) == typeof(Sudent))
return Context.Get<ISudent>(id);
throw new Exception("Unknown Interface " + typeof(T).Name);
}
}

有没有更好的实现方法?鉴于我们的上下文不知道我们的数据类型(教师、学生),只有它的接口(interface)(ITeacher、IStudent)。

这样的东西能行吗?

class Repository: IRepository
{
T Get<T>(int id) where T : EntityBase
{
var MyInterface = FindInterface<T>();
return Context.Get<MyInterface>(id);
}
}

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com