VerySource

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 847|回复: 5

.net组件中的接口和实现分开的问题

[复制链接]

3

主题

11

帖子

10.00

积分

新手上路

Rank: 1

积分
10.00
发表于 2020-3-10 13:30:01 | 显示全部楼层 |阅读模式
问题具体描述:
我定义了一个接口IFoo,然后TFoo类实现了IFoo接口,IFoo和TFoo分别在两个不同的文件,且这两个文件在不同DLL中。

现在我有个模块A要用通过IFoo用到TFoo提供的服务,请问模块A怎么样才能只引用IFoo而不引用TFoo?(问题的关键就是怎么样在A中将IFoo定义的接口激活且又不直接引用TFoo类,就好像COM组件中,A模块可以通用COM组件提供的接口文件,再通过一个CLASSGUID和CreateComObject方法可以激活COM接口,那么在.NET中怎么实现这个呢?)
回复

使用道具 举报

0

主题

4

帖子

5.00

积分

新手上路

Rank: 1

积分
5.00
发表于 2020-6-3 17:00:02 | 显示全部楼层
.NET也可以做COM组件
或者
用反射
回复

使用道具 举报

0

主题

4

帖子

5.00

积分

新手上路

Rank: 1

积分
5.00
发表于 2020-6-5 22:45:01 | 显示全部楼层
反射

Assembly assembly = Assembly.LoadFrom(TFoo.dll);
Type type = assembly.GetType("TFoo");
object instance = Activator.CreateInstance(type,parameters,null);
IFoo foo = (IFoo)instance;
回复

使用道具 举报

3

主题

11

帖子

10.00

积分

新手上路

Rank: 1

积分
10.00
 楼主| 发表于 2020-6-7 18:15:01 | 显示全部楼层
zhenjbd :
谢谢!有点理解,c#中动态加载DLL是否也用Assembly。能否给点详细列子给我
回复

使用道具 举报

0

主题

2

帖子

3.00

积分

新手上路

Rank: 1

积分
3.00
发表于 2020-6-8 13:45:01 | 显示全部楼层
接口
namespace InterFace
{
        public interface Example
        {
                void Show();
        }
}


namespace InheritClass
{
        /// <summary>
        ///
        /// </summary>
        public class InheritExample : InterFace.Example
        {
                public InheritExample()
                {
                        //
                        // TODO: コンストラクタ ロジックをここに追加してください。
                        //
                }

                public void Show()
                {
                }
        }
}


具体调用
Assembly assembly1 = Assembly.LoadFrom (@"F:\201701\InheritClass\bin\Debug\InheritClass.dll");

                        InterFace.Example object1        = (InterFace.Example)assembly1.CreateInstance("InheritClass.InheritExample", true);

                        object1.Show();
回复

使用道具 举报

3

主题

11

帖子

10.00

积分

新手上路

Rank: 1

积分
10.00
 楼主| 发表于 2020-6-9 16:30:01 | 显示全部楼层
谢谢大家!再追问一下:
Assembly可以配置吗?我看上面的例子中有两处是用的字符串,每个C#项目中的都有个
AssemblyInfo.cs,这个是否可以实现部分代码可配置呢?       
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|CopyRight © 2008-2023|verysource.com ( 京ICP备17048824号-1 )

快速回复 返回顶部 返回列表