如何动态引入命名空间?(asp.net vb)
在程序中,一般用imports namespace来导入命名空间
但是现在有这样的需要:
这个namespace是不确定的,具有同样class及功能的两个命名空间进行切换。
这需要动态导入命名空间,不知道有没有这样的解决办法?
问题点数:30、回复次数:14Top
1 楼jiezhi(风满袖)回复于 2006-01-26 12:04:07 得分 15
你的想法有点好玩了.
既然你的class名称相同,那你就使用完整的名字好了.Top
2 楼jiezhi(风满袖)回复于 2006-01-26 12:05:10 得分 0
你可以尝试一下预编译指令,比如:
// preprocessor_if.cs
#define DEBUG
#define VC_V7
using System;
public class MyClass
{
public static void Main()
{
#if (DEBUG && !VC_V7)
Console.WriteLine("DEBUG is defined");
#elif (!DEBUG && VC_V7)
Console.WriteLine("VC_V7 is defined");
#elif (DEBUG && VC_V7)
Console.WriteLine("DEBUG and VC_V7 are defined");
#else
Console.WriteLine("DEBUG and VC_V7 are not defined");
#endif
}
}
Top
3 楼myloginname(技术有九重我在第一重)回复于 2006-01-26 13:02:12 得分 0
回复人: jiezhi(风满袖) ( ) 信誉:100 2006-01-26 12:04:00 得分: 0
你的想法有点好玩了.
既然你的class名称相同,那你就使用完整的名字好了.
===========================================
两个命名空间里的内容有相似的功能,但是有不同
主要是想通过动态载入命名空间,来实现不同的功能Top
4 楼jiezhi(风满袖)回复于 2006-01-26 13:15:21 得分 10
你的主旨事实上是动态使用不同类型的对象.
既然你的这两个类具有类似的功能,你大概可以抽象一个接口出来,或者使用继承的方式---
应用多态Top
5 楼feiyun0112(http://feiyun0112.cnblogs.com/)回复于 2006-01-26 13:22:49 得分 0
那就用反射
Top
6 楼brando_beat(Eの懒龙)回复于 2006-01-26 13:33:50 得分 5
和反射有什么关系,楼主的想法确实好玩。
为什么不用接口,然后使用类来实现多接口。Top
7 楼chinank(中国南开)回复于 2006-01-26 15:56:10 得分 0
xuexiTop
8 楼myloginname(技术有九重我在第一重)回复于 2006-01-26 16:43:35 得分 0
回复人: brando_beat(Eの懒龙) ( ) 信誉:100 2006-01-26 13:33:00 得分: 0
和反射有什么关系,楼主的想法确实好玩。
为什么不用接口,然后使用类来实现多接口。
================================
不大懂得接口
事实上两个类的功能类似,但不一样,根据情况,可能需要执行其中的一个
因此需要动态加载才可以
Top
9 楼jiezhi(风满袖)回复于 2006-01-26 16:48:45 得分 0
典型的设计问题.
还是让你们的设计师好好考虑设计问题Top
10 楼nameone(过客)回复于 2006-01-26 23:38:32 得分 0
顶Top
11 楼hdt(倦怠)回复于 2006-01-27 00:10:50 得分 0
Public Class LoadInvoke
Public Shared Sub Main(ByVal args() As String)
Dim a As [Assembly] = [Assembly].LoadFrom(args(0))
Dim mytypes As Type() = a.GetTypes()
Dim flags As BindingFlags = BindingFlags.NonPublic Or BindingFlags.Public Or BindingFlags.Static Or _
BindingFlags.Instance Or BindingFlags.DeclaredOnly
Dim t As Type
For Each t In mytypes
Dim mi As MethodInfo() = t.GetMethods(flags)
Dim obj As [Object] = Activator.CreateInstance(t)
Dim m As MethodInfo
For Each m In mi
m.Invoke(obj, Nothing)
Next m
Next t
End Sub 'Main
End Class 'LoadInvoke
Top
12 楼caicaibao(菜菜(包))回复于 2006-01-27 08:34:40 得分 0
同时引入两个命名空间,需要调用时书写完整命名?Top
13 楼mailxin()回复于 2006-01-27 08:53:53 得分 0
关注,应该用接口,类继承接口更好吧Top
14 楼winner2050(找工作中,各位XD收到风,M一下。)回复于 2006-01-27 12:13:53 得分 0
不写imports ***语句
用到的时候就这样
比如原来的
imports System.Data
------
dim mydataset as new dataset
我的新方法
Dim aa As new System.Data.datasetTop




