是否可以在运行时从类中删除属性,例如:
public Class A
{
public int num1 {get;set;}
public int num2 {get;set;}
public int num3 {get;set;}
}
Class A Obj = new A();
在运行时,我想从num2
中删除obj
。有可能吗?
答案 0 :(得分:9)
这不可能。编译完成后,就会设置一个类定义。
答案 1 :(得分:1)
正如其他人所说,这是不可能的。
相反,您可以添加其他属性,例如
public List<string> ignoredProperties {get; set;}
然后在运行时将num2
添加到该列表并检查它应该忽略的属性。
答案 2 :(得分:0)
你必须采用Model / ViewModel方法。创建一个ViewModel,它将满足您的需求。
答案 3 :(得分:0)
我同意Nic的回复:这是不可能做到的。编译完成后,就会设置一个类定义。
但是你可以通过反射动态地创建一个类属性。
答案 4 :(得分:0)
我的情况要容易得多
我有一个 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");
答案 5 :(得分:0)
我无法删除该属性,我试图创建一个动态 JSON,将 2 个不同的类合并在一起但没有一些属性(该合并类不需要),所以我所做的是,我添加了一个自定义属性并添加到我不需要的字段/属性中,并在合并 2 个类后使用反射在运行时创建自定义 JSON。