错误“不包含“getProperty”的定义”当尝试设置泛型类型对象的属性时

发布于 2025-01-10 02:01:52 字数 314 浏览 0 评论 0原文

void myFunc<M>()
{
    dynamic uploadReq = (M)Activator.CreateInstance(typeof(M));
    uploadReq.getProperty("Credentials").SetValue(null);
}

我有一个函数,在其中提供类型,创建该类型的对象,然后将该对象的属性设置为 null。我收到一个错误

MyCustomType 不包含“getProperty”的定义

我该如何解决此问题?

void myFunc<M>()
{
    dynamic uploadReq = (M)Activator.CreateInstance(typeof(M));
    uploadReq.getProperty("Credentials").SetValue(null);
}

I have a function where I supply a type, an object of this type is created, and then a property on the object is set to null. I get an error

MyCustomType does not contain a definition for 'getProperty'

How can I fix this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

烟酒忠诚 2025-01-17 02:01:52

GetProperty是Type的方法。对象没有它。
您可以使用这种方式:

  1. 从类型调用 GetProperty

  2. 将值设置为对象

    public static void myFunc()
     {
         动态uploadReq = (M)Activator.CreateInstance(typeof(M));
         typeof(M).GetProperty("凭据").SetValue(uploadReq, null);
     }
    

GetProperty its method of Type. Object has no it.
You can use this way:

  1. call GetProperty from type

  2. set value to object

    public static void  myFunc<M>()
     {
         dynamic uploadReq = (M)Activator.CreateInstance(typeof(M));
         typeof(M).GetProperty("Credentials").SetValue(uploadReq, null);
     }
    
記憶穿過時間隧道 2025-01-17 02:01:52

在这个特定的代码片段中,您不需要dynamic或反射,因为您在编译时就知道类型,只需使用CreateInstance方法的通用版本,甚至更好类型的构造函数。这更快并且还提供编译时检查。

void myFunc<M>() where M : new()
{
   M uploadReq = new M();
   uploadReq.Credentials = null;
}

或者

M uploadReq = Activator.CreateInstance<M>();
uploadReq.Credentials = null;

In this specific snippet of code you don't need dynamic or reflection, because you know the type at compile time, just use the generic version of the CreateInstance method or even better the constructor of the type. This is faster and also provides compile time checks.

void myFunc<M>() where M : new()
{
   M uploadReq = new M();
   uploadReq.Credentials = null;
}

or

M uploadReq = Activator.CreateInstance<M>();
uploadReq.Credentials = null;
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文