c# - 如何将类实例作为参数传递给C#中的方法

标签 c#

我需要从引用的 dll 将属性设置为客户端应用程序。

技术部分解释如下。

我有一个类实例

public class test
{
    public string Resultobj;
    public string Result
    {
        get
        {
            return Resultobj;
        }
        set
        {
            Resultobj = value;
        }
    }
    test obj = new test();
}

我将它作为驻留在另一个程序集中的参数发送到一个方法。

callmethod(test obj );

所以在引用的程序集中,我需要将值设置为实例,以便可以从应用程序访问它。 任何人都可以提供有关如何将属性设置为作为参数传递给方法的类实例的建议。

我在这里添加我尝试过但错误的内容。 :-(

public override void callmethod(ref object obj)
{
    Type type = Type.GetType(obj);
    PropertyInfo property = type.GetProperty("Result");
    property.SetValue(type , "somevalue", null);
}

由于类名实例将在运行时传递,因此我无法提供类名作为数据类型。 我在行中遇到错误

   callmethod(test obj );

Argument '1': cannot convert from 'test ' to 'ref object'

最佳答案

首先,您没有将参数正确传递给 callmethod,因为它需要一个 reference 参数,您需要使用 ref 关键词例如

callmethod(ref (object)obj);

然后在 callmethod 本身中,将第一行更改为:

Type type = obj.GetType();

Type.GetType 需要类型的 string 表示,而不是实际的对象实例。最后,更新 SetValue 调用以使用对象实例,而不是类型,例如

property.SetValue(obj, "somevalue");

关于c# - 如何将类实例作为参数传递给C#中的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17835776/

相关文章:

C# HttpWebRequest 表单上传

c# - 鼠标进入/离开Form和Button子事件问题

c# - 在unity 3D编辑器中获取右键单击的路径

C#将字符串转换为if条件

c# - 如何减少特定于平台的项目之间的代码重复量?

c# - 等待 DbContext 时 WPF UI 阻塞

c# - 在 .net5/vNext/MVC6 中添加新的路由约束

c# - gRPC 在 protobuf 中使用列表

c# - 是否可以将 C# 字符串转换为 SqlChars?

c# - Asp.net SessionID 的字符串格式是什么?