C# 已知有一个和 类名 相同的字符串str, 如何根据str来获取这个类?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C# 已知有一个和 类名 相同的字符串str, 如何根据str来获取这个类?相关的知识,希望对你有一定的参考价值。

C#,现在我有一个类 A ,我想根据这个类名所对应的字符串"A"来,获取这个类。请教有什么方法可以实现?

使用反射技术来实现你的需求

如果你要获取到这个类的对象实例可以这么做

以String类为例子
string str = "System.String";

String exp = (String )Activator.CreateInstance(str);

//如果你要得到这个类的类型信息可以这么做
Type expType = Type.GetType(str);

//使用Type对象也可以实例化一个对象同样调用上面方法
String exp = (String )Activator.CreateInstance(expType);

更请参考.NET反射技术,它可以教会你更多的关于后期绑定的信息
参考技术A Activator.CreateInstance 方法有一个重载可以,你查下。

Activator.CreateInstance(String, String) 使用命名的程序集和默认构造函数,创建名称已指定的类型的实例。追问

能说详细点吗?
我指的是我自己创建了一个类 A,现在想通过这个类的名字 "A" 来获取这个类,不是类的实例
就是通过某些方法来 输入一个 ”A“,获取类A

追答

你的目的是创建这个类的新实例还是获取已经创建的实例的引用?

参考技术B 可以使用Activator的这个方法CreateInstance,其方法的参数是程序集和类名,如果能引用到这个程序集则正常就可以创建实例。

c#字符串string str="a0b0c0";如何去掉最后一个0

如果是个已知数很好办,根据字符串的特征来替换,如果是未知数就不好办了,具体情况要具体分析。
如果只是要替换你现在提供的这个已知的字符串,方法如下:
string str="a0b0c0";
string str2=str.Replace("c0","c");这样就可以把最后那个0替换掉了。
参考技术A 如果是仅仅去掉最后一个 字符而已 就是这样写.
str=str.Remove(str.Length - 1);
如果你是想 去掉字符中最后的0
那就是
string str="a0b0c0";

int i = 0;
int j = 0;
foreach (char item in str)

i++;
if (item == '0')

j = i;



str = str.Remove(j-1);
参考技术B 如果你知道0 在字符串中的位置
可以用Replace 函数直接替换
string str="aaaa";
System.Text.StringBuilder b = new System.Text.StringBuilder(str);
b.Replace("a","b",1,1);
str=b.ToString();
Console.Write(str); //输出为: 'abaa'

如果不知道要替换的0的位置,则要自己根据实际需求写算法判断了
参考技术C soustring

以上是关于C# 已知有一个和 类名 相同的字符串str, 如何根据str来获取这个类?的主要内容,如果未能解决你的问题,请参考以下文章

c#字符串string str="a0b0c0";如何去掉最后一个0

2021-12-27:给定一个字符串str,和一个正数k, str子序列的字符种数必须是k种,返回有多少子序列满足这个条件。 已知str中都是小写字母, 原始是取mod, 本节在尝试上,最难的, 搞出

获取 C# 类名称列表?

c#里一个文件夹下可以添加多个命名空间和类名相同的类么

C#中String的静态方法Compare(str1,str2)比较字符串大小

C#中String的静态方法Compare(str1,str2)比较字符串大小