CodeSmith中“自定义属性(Custom Property)”的一个疑问?求解

gaijf 2010-05-20 11:16:00
CodeSmith中的自定义属性(Custom Property)

先看相关文章
http://www.applestar.net/index.php/developer-list/42-dotnet/151-applestar.html

我的问题是:

在如何实例化程序集中的一个类,并调用该对象的方法?

其它:

this.Response.WriteLine(AssemblyToLoad)
上面例子中能获取程序集的信息
...全文
272 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
gaijf 2010-05-21
  • 打赏
  • 举报
回复
wuyq11:

问题解决了!后面出的问题是因为被访问的类没有构造函数,所以对象实例为null。
xiaodru 2010-05-21
  • 打赏
  • 举报
回复
tuijian

http://blog.csdn.net/dalao812/archive/2007/08/17/1748124.aspx
gaijf 2010-05-21
  • 打赏
  • 举报
回复
object obj = AssemblyToLoad.CreateInstance("NameSpace.StringUtil1", true);
在这行提示出错,AssemblyToLoad的方法里没有GetExecutingAssembly()
gaijf 2010-05-21
  • 打赏
  • 举报
回复
楼上,不行啊!codesmith中提示:未将对象引用设置到对象的实例

object obj = AssemblyToLoad.CreateInstance("NameSpace.StringUtil1", true);

Type type = obj.GetType();

MethodInfo m = type.GetMethod("Testing",BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Static);

if (m != null)
{
Object[] args = new Object[1];
args[0] = "Test";
m.Invoke(obj, args);
}
else
{
throw new NullReferenceException("!!!");
}
jianshao810 2010-05-20
  • 打赏
  • 举报
回复
跟着楼主学习
皇城龙三 2010-05-20
  • 打赏
  • 举报
回复
关于CodeSmith的,希望对你有所帮助

http://blog.csdn.net/dalao812/archive/2007/08/17/1748124.aspx
MasDn 2010-05-20
  • 打赏
  • 举报
回复
实例化程序集中的一个类,并调用该对象的方法 我就不明白了 跟codesmith 有什么关系。

实例化其他程序集里的一个类用反射就好了,再invoke方法就好了啊

不需要在那个类里加个Assembly的属性

不知道我理解的对不对 你的意思
yuanhuiqiao 2010-05-20
  • 打赏
  • 举报
回复
yuanhuiqiao 2010-05-20
  • 打赏
  • 举报
回复
sf,先占上,再看
wuyq11 2010-05-20
  • 打赏
  • 举报
回复
class Reflect
{
private int Add(int arg0, int arg1, int arg2)
{
return arg0 + arg1 + arg2;
}
}
class Program
{
internal static int CallAdd()
{
object target = Assembly.GetExecutingAssembly().CreateInstance("NameSpace.Reflect", true);

Type type = target.GetType();
MethodInfo methodInfo = type.GetMethod("Add", BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Public);

if (methodInfo == null)
return 0;

object[] args = new object[] { 10, 20, 30 };
object result = methodInfo.Invoke(target, args);
return Convert.ToInt32(result);
}
}
方法没找到吗?
code smith
gaijf 2010-05-20
  • 打赏
  • 举报
回复
up



up






gaijf 2010-05-20
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 ly302 的回复:]

关于CodeSmith的,希望对你有所帮助

http://blog.csdn.net/dalao812/archive/2007/08/17/1748124.aspx
[/Quote]

谢谢,很有帮助!
gaijf 2010-05-20
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 masdn 的回复:]

实例化程序集中的一个类,并调用该对象的方法 我就不明白了 跟codesmith 有什么关系。

实例化其他程序集里的一个类用反射就好了,再invoke方法就好了啊

不需要在那个类里加个Assembly的属性

不知道我理解的对不对 你的意思
[/Quote]

你的理解是对的,跟codesmith没有必然关系,我把带代码贴出,请看看哪有问题:

程序集:Test.dll
类名:StringUtil
方法名:Testing

<%
Module module = AssemblyToLoad.GetModule("Test.dll");
Type[] types = module.FindTypes(Module.FilterTypeName,"StringUtil");
if(types.Length != 0)
{
object obj = AssemblyToLoad.CreateInstance("StringUtil");

MethodInfo m = obj.GetType().GetMethod("Testing",BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Static);

if (m != null)
{
Object[] args = new Object[1];
args[0] = "Test";
m.Invoke(obj, args);
}
else
{
throw new NullReferenceException("error!!!");
}
}
%>
源码链接: https://pan.quark.cn/s/dbe32f6bace6 在本指南,我们将详细解析如何在银河麒麟v10操作系统平台上完成MySQL 5.7的安装过程。银河麒麟v10作为一个基于Linux内核的国产操作系统,特别适用于arm架构的aarch64计算平台。鉴于我们讨论的是免编译的安装方法,这意味着我们将借助预先编译好的二进制软件包来简化操作步骤,而非采用从源代码开始的编译方式。 ### 一、前期准备 1. **系统更新**: 在部署任何新软件之前,务必确保操作系统处于最新状态,此举旨在规避潜在的兼容性挑战和已知的安全隐患。 ``` sudo apt-get update sudo apt-get upgrade ``` 2. **依赖安装**: MySQL 5.7版本在运行时可能需要特定的库文件支持,比如libaio和jemalloc。在银河麒麟v10环境,可以通过以下指令来安装这些必需的依赖项: ``` sudo apt-get install libaio1 libaio-dev jemalloc-dev ``` ### 二、获取MySQL 5.7二进制文件 由于银河麒麟v10运行在arm架构之上,因此需要寻找适配aarch64架构的MySQL 5.7二进制文件。这些文件可从MySQL的官方发布渠道或授权的第三方镜像站点获取。务必确认下载的文件名与压缩包内的内容一致。例如,文件名应为`mysql-5.7.37-linux-glibc2.17-arm64.tar.gz`。 ### 三、部署MySQL 5.7 1. **文件解压缩**: 将下载的MySQL压缩文件解压至一个指定目录,例如 `/usr/local/`。 ``` tar...
下载代码方式:https://pan.quark.cn/s/a4b39357ea24 Node.js 是一种开放源代码且能够在多种操作系统上运行的 JavaScript 执行环境,它使得开发人员能够在服务器端执行 JavaScript 代码。Node.js 采用了 V8 引擎,该引擎是由 Google 为 Chrome 浏览器开发的一个高性能的 JavaScript 解释器。Node.js 的 16.x 版本在其发展历程占据着重要位置,其包含了众多新功能以及性能上的改进。标题 "Nodejs16-x64 windows安装包" 指向的是专为 Windows 操作系统设计的 64 位版本的 Node.js 16 安装程序。在 Windows 平台上安装 Node.js 的 64 位版本对于处理大量数据或运行需要高性能的应用程序来说尤为关键,因为 64 位系统能够更有效地利用硬件资源。描述 "Nodejs-16 x64位windows 安装包" 明确了该安装程序是为 Windows 用户准备的,特别是对于那些需要运行 64 位应用程序的用户。x64 表明该版本兼容 64 位架构,意味着它能够充分利用 64 位计算机的内存和处理能力。标签 "Node Nodejs nodejs16" 提供了关于此安装包的核心信息,表明它与 Node.js 相关,并且具体指的是 v16 版本。这些标签有助于进行搜索和分类,从而方便用户找到他们所需要的特定版本。压缩包文件 "node-v16.18.0-x64.msi" 代表实际的安装文件,其 "v16.18.0" 指示了 Node.js 的具体版本号,"x64" 再次强调了其适用于 64 位系统,而 ".msi" 后缀表明这是一...

111,131

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧