c# - 从通用模型中获取模型

标签 c# generics

如果我有下面的方法;

private TSource CopyFileClientModel<TSource>(TSource fileClientOrContact)

因此,我可以将 FileClientFileContact 模型传入此方法。

两者都有一个名为 Contact 的属性,它也是一个模型以及两者之间不通用的其他一些属性。

现在我想从传入的模型中获取 Contact 模型。

Contact sourceContact = fileClientOrContact.Contact;

但是,鉴于这是一个泛型,它不知道 TSource 中有一个 Contact 对象。

我的限制是我不能针对 FileClientFileContact 放置接口(interface)。我基本上不能碰这两个模型中的任何一个。

如何从 TSource 获取联系人对象?我能以某种方式使用反射吗?

最佳答案

您可以传递一个函数来返回联系人。

例如:

private FileClient CopyFileClientModel(FileClient fileClient) {
    return this.CopyFileClientModel(fileClient, c => c.Client);
}

private FileContact CopyFileClientModel(FileContact fileContact) {
    return this.CopyFileClientModel(fileContact, c => c.Client);
}

private TSource CopyFileClientModel<TSource>(TSource fileClientOrContact, Func<TSource, Contact> contactGetter) {
    var contact = contactGetter(fileClientOrContact);
    // Whatever else...
}

关于c# - 从通用模型中获取模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8875584/

相关文章:

c# - 如何使用单个 DataSet.xsd 制作两个报告(.rdlc)

c# - SQL 服务器 : BCP vs SQLCMD - what is more efficient?

java - 这些泛型语句之间有什么区别?

c# - 确保泛型方法中的参数基于同一类中的参数

C# 通用复制构造函数

java - 如何在 Java 中实例化通用递归类

C#:使用类泛型参数覆盖泛型方法

c# - FlowLayoutPanel 自动包装不适用于自动调整大小

generics - Kotlin:编译器无法为某些运算符推断出通用类型

c# - 使用 WPF 按钮复制和粘贴命令