动态bean实例化(反射?)[英] Dynamic bean instantiation (reflection???)

问题描述

你好,

我正在尝试基于字符串动态创建对象实例
类名,然后我需要为这些动态设置值
对象,但我不知道如何在 C# 中执行此操作.下面是例子
我需要做的事情:

******Dog.cs******
命名空间我的系统
{
公共类狗
{
私有字符串名称;

公共字符串名称
{
获取{返回名称;}
设置{名称=值;}
}
}
}

******Cat.cs******
命名空间我的系统
{
公共类猫
{
私有字符串名称;

公共字符串名称
{
获取{返回名称;}
设置{名称=值;}
}
}
}

******SetAnimals.cs******
命名空间我的系统
{
公共类 SetAnimals
{
字符串[,] 动物 = 新字符串[,] {{"狗","狗名 1"},
{"狗"、"狗名2"}、{"猫"、"猫名1"}};

公共 IList setAnimals()
{
IList animalList = new ArrayList();

//以某种方式动态地创建一个对象的新实例和
将其添加到动物列表
//例如Animal[0,0] 是 Dog 类型,因此是动态的
创建一个 Dog 类,并设置名称
//对于刚刚创建的 Dog 类,取自 Animal[0,1]
"狗名1"

返回动物列表;
}
}
}

我在 C# 中尝试做的事情可能吗?有没有人有什么想法
这是怎么做到的?

谢谢,
Jerry

推荐答案

我认为你的问题的最佳解决方案可以从 COM 源代码中找到.

创建一个可以生成对象的类.
类的一种方法采用类的类型名称字符串,
并且在方法内部包含一个 if-else-if-else... whick 返回
对应的对象.

像这样:

类生成
{
public System.Object getInstance(string typeName)
{
if(typeName == "狗")
返回新的狗();
else if/* 以此类推 */
}
}
杰里奥写道:
你好,

我正在尝试基于字符串动态创建对象实例
类名,然后我需要为这些动态设置值
对象,但我不知道如何在 C# 中执行此操作.下面是例子
我需要做的事情:

******Dog.cs******
命名空间我的系统
{
公共类狗
{
私有字符串名称;

公共字符串名称
{
获取{返回名称;}
设置{名称=值;}
}
}
}

******Cat.cs******
命名空间我的系统
{
公共类猫
{
私有字符串名称;

公共字符串名称
{
获取{返回名称;}
设置{名称=值;}
}
}
}

******SetAnimals.cs******
命名空间我的系统
{
公共类 SetAnimals
{
字符串[,] 动物 = 新字符串[,] {{"狗","狗名 1"},
{"狗"、"狗名2"}、{"猫"、"猫名1"}};

公共 IList setAnimals()
{
IList animalList = new ArrayList();

//以某种方式动态地创建一个对象的新实例和
将其添加到动物列表
//例如Animal[0,0] 是 Dog 类型,因此是动态的
创建一个 Dog 类,并设置名称
//对于刚刚创建的 Dog 类,取自 Animal[0,1]
"狗名1"

返回动物列表;
}
}
}

我在 C# 中尝试做的事情可能吗?有没有人有什么想法
这是怎么做到的?

谢谢,
Jerry

或者你可以切换一个类的HashCode.
那可能会更快.:)

杰里奥写道:
你好,

我正在尝试基于字符串动态创建对象实例
类名,然后我需要为这些动态设置值
对象,但我不知道如何在 C# 中执行此操作.下面是例子
我需要做的事情:

******Dog.cs******
命名空间我的系统
{
公共类狗
{
私有字符串名称;

公共字符串名称
{
获取{返回名称;}
设置{名称=值;}
}
}
}

******Cat.cs******
命名空间我的系统
{
公共类猫
{
私有字符串名称;

公共字符串名称
{
获取{返回名称;}
设置{名称=值;}
}
}
}

******SetAnimals.cs******
命名空间我的系统
{
公共类 SetAnimals
{
字符串[,] 动物 = 新字符串[,] {{"狗","狗名 1"},
{"狗"、"狗名2"}、{"猫"、"猫名1"}};

公共 IList setAnimals()
{
IList animalList = new ArrayList();

//以某种方式动态地创建一个对象的新实例和
将其添加到动物列表
//例如Animal[0,0] 是 Dog 类型,因此是动态的
创建一个 Dog 类,并设置名称
//对于刚刚创建的 Dog 类,取自 Animal[0,1]
"狗名1"

返回动物列表;
}
}
}

我在 C# 中尝试做的事情可能吗?有没有人有什么想法
这是怎么做到的?

谢谢,
Jerry

4 月 24 日下午 1:15,jerryau <jerrya...@gmail.com 写道:
我正在尝试基于字符串动态创建对象实例
类名,然后我需要为这些动态设置值
对象,但我不知道如何在 C# 中执行此操作.下面是例子
我需要做的事情:
<snip>
我在 C# 中尝试做的事情可能吗?有没有人有什么想法
如何做到这一点?
听起来你在使用 Spring.NET:
http://springframework.net

乔恩


本文地址:https://www.itbaoku.cn/post/1050557.html