gpt4 book ai didi

c# - 如何将非引用类型的对象转换为实际对象

转载 作者:行者123 更新时间:2023-11-30 19:47:42 24 4
gpt4 key购买 nike

也许这个问题让你感到困惑,但请帮助我

在 .NET 4.0 中,语言 C#

我有两个项目,一个是为类定义类和属性标记信息的库,一个是处理从该库声明的类的反射的项目。

问题是,在没有引用库的情况下,我只是使用与反射相关的类来读取程序集,我必须获取在对象类中声明的属性的值。

例如

---在LIB项目中,命名为lib.dll

public class MarkAttribute: Attribute
{
public string A{get;set;}
public string B{get;set;}
}

[Mark(A="Hello" B="World")]
public class Data
{
}

---反射(reflection)项目

public void DoIt()
{
string TypeName="Lib.Data";
var asm=Assembly.LoadFrom("lib.dll");
foreach (var x in asm.GetTypes())
{
if (x.GetType().Name=="Data")
{
var obj=x.GetType().GetCustomAttributes(false);

//now if i make reference to lib.dll in the usual way , it is ok
var mark=(Lib.MarkAttribute)obj;
var a=obj.A ;
var b=obj.B ;

//but if i do not make that ref
//how can i get A,B value
}
}
}

任何想法表示赞赏

最佳答案

如果您知道属性的名称,您可以使用 dynamic 而不是反射:

 dynamic mark = obj;
var a = obj.A;
var b = obj.B;

关于c# - 如何将非引用类型的对象转换为实际对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6287962/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com