C# 如何在运行时从类中删除属性

C# 如何在运行时从类中删除属性,c#,reflection,dynamic,C#,Reflection,Dynamic,是否可以在运行时从类中删除属性,如: public Class A { public int num1 {get;set;} public int num2 {get;set;} public int num3 {get;set;} } Class A Obj = new A(); 在运行时,我想从obj中删除num2。可能吗?这是不可能的。编译后,将设置一个类定义。正如其他人所说,这是不可能的 相反,您可以添加另一个属性,例如 public List<string>

是否可以在运行时从类中删除属性,如:

public Class A
{
  public int num1 {get;set;}
  public int num2 {get;set;}
  public int num3 {get;set;}
}

Class A Obj = new A();

在运行时,我想从
obj
中删除
num2
。可能吗?

这是不可能的。编译后,将设置一个类定义。

正如其他人所说,这是不可能的

相反,您可以添加另一个属性,例如

public List<string> ignoredProperties {get; set;}
public List ignoredProperties{get;set;}

然后在运行时将
num2
添加到该列表中,并检查您应该忽略的属性。

您必须使用Model/ViewModel方法。创建一个ViewModel,它将根据您的要求具有有限的属性。

我同意Nic的回答:这无法做到。编译后,将设置一个类定义


但是,您可以通过反射动态创建所需的类属性。

我的情况要简单得多

我有一门课是POST
然后我需要删除一些属性并将其保存到JSON
我确实使用了System.Dynamic.ExpandoObject复制类

            Object value;
            
            System.Dynamic.ExpandoObject cloneData = JsonSerializer.Deserialize<ExpandoObject>(JsonSerializer.Serialize(data));
           
            cloneData.Remove("IP", out value);
            value = value;
            cloneData.Remove("analytics", out value);
            value = value;


            string azurecontainer = @"data";
            string azureblobJSONDataFilename = @"profile/" + _userInfoSessionB.u + @".json";
            string JSONData = JsonSerializer.Serialize(cloneData);
            object p = azureStorage.UploadBlob2ContainerTextAsync(JSONData, azurecontainer, azureblobJSONDataFilename, "application/json", "public, max-age=30");
对象值;
System.Dynamic.ExpandoObject cloneData=JsonSerializer.Deserialize(JsonSerializer.Serialize(data));
删除(“IP”,输出值);
价值=价值;
删除(“分析”,输出值);
价值=价值;
字符串azurecontainer=@“数据”;
字符串azureblobJSONDataFilename=@“profile/”+_userInfoSessionB.u++.json”;
字符串JSONData=JsonSerializer.Serialize(cloneData);
对象p=azureStorage.UploadBlob2ContainerTextAsync(JSONData,azurecontainer,azureblobJSONDataFilename,“应用程序/json”,“公共,最大年龄=30”);

我无法删除属性,我试图创建一个动态JSON,两个不同的类合并在一起,但没有一些属性(合并后的类不需要),所以我添加了一个自定义属性并添加到我不需要的字段/属性,并在合并2个类后在运行时使用反射创建自定义JSON。

您要删除的是属性,而不是属性。不,这是不可能的,所以您可能应该询问您试图实现的目标,不要问你认为可以用来解决问题的方法,你到底想做什么?是否确实要完全删除num2属性(破坏使用它的所有其他代码?)。或者你只是不想让它出现在智能感知中?