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属性(破坏使用它的所有其他代码?)。或者你只是不想让它出现在智能感知中?