gpt4 book ai didi

c# - 将接口(interface)映射到不实现接口(interface) C# 的类(动态)

转载 作者:行者123 更新时间:2023-11-30 16:11:19 27 4
gpt4 key购买 nike

这是我在 Stackoverflow 中的第一篇文章。感谢 Stackoverflow。

我的问题:

我在类库中有一个接口(interface)。

namespace TestClient
{
public interface IMobileStore
{
List<string> GetMobileDetails();

int AddMobile(string mobile);
}
}

我在另一个类库中有一个名为 MobileLibrary 的类并实现了 IMobileStore 接口(interface)(开发时)

namespace MobileLibrary
{
public class MobileLibrary : IMobileStore
{
List<string> GetMobileDetails()
{
return new List<string>();
}

int AddMobile(string mobile)
{
return 1;
}
}
}

并在控制台应用程序中消费和使用 MobileLibrary 库。

但现在我想使用 IndianMobileLibrary(它与下面的 MobileLibrary 类具有相同的结构,但它没有实现接口(interface))而不是 MobileLibrary

注意:IndianMobileLibrary 在另一个类库中可用(对该库没有任何控制 - 第 3 方库)

namespace IndianMobileLibrary 
{
public class IndianMobileLibrary //(doesn't implement the interface)
{
List<string> GetMobileDetails()
{
return new List<string>();
}

int AddMobile(string mobile)
{
return 1;
}
}
}

此处介绍如何将 IMobileStore 动态映射到 IndianMobileLibrary(作为实现),并为实现 IndianMobileLibrary 类的 IMobileStore 动态创建对象。

我听说企业库依赖注入(inject)对此有帮助。但我仍然使用企业图书馆。你能分享一下这个想法吗?

最佳答案

你应该对伟大的impromptu interface感兴趣图书馆(可通过 nuget)。在它的帮助下,你可以简单地做一个魔术:

var indian = new IndianMobileLibrary();
IMobileStore iface = indian.ActLike<IMobileStore>();
var mobile = iface.AddMobile("test");

当然,您对 ActLike 返回的对象具有完整的智能感知支持。这样做的另一个神奇优势是您根本不必知道 indian 的类型。

关于c# - 将接口(interface)映射到不实现接口(interface) C# 的类(动态),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24518155/

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