gpt4 book ai didi

C# 作为带有泛型但不相关 的类型的运算符

转载 作者:行者123 更新时间:2023-12-01 07:17:06 26 4
gpt4 key购买 nike

我有一个带有泛型的抽象基类,我将针对这个问题简化它:

public abstract class DBBaseTable<T>
{
public T Id { get; set; }
public byte[] RowVersion { get; set; }
}

现在,我可以有这样的类(class): Person : DBBaseTable<int>Animal: DBBaseTable<Guid>
我试图避免反射,以便在我根本不知道 T 的部分代码中访问属性 RowVersion类型。
var memberInfo = oldObject.GetType().BaseType;
if (memberInfo != null
&& memberInfo.IsGenericType
&& memberInfo.GetGenericTypeDefinition() == typeof(DBBaseTable<>)
)
{
var isCorrectRowVersion = (oldObject as DBBaseTable<object>).RowVersion ==
(objToUpdate as DBBaseTable<object>).RowVersion;

//TODO....
}

条件 IF 条件工作正常...但是当我尝试使用 as 时运算符我总是需要指定 T类型...我曾尝试使用“对象”但它不起作用...而且我根本不知道我是在处理 int、guid 还是其他类型...

我知道如何通过反射解决这个问题,但我想知道是否有替代方案?

最佳答案

移动 RowVersion进入一个基类。

public abstract DBBaseTable
{
public byte[] RowVersion { get; set; }
}

public abstract class DBBaseTable<T> : DBBaseTable
{
public T Id { get; set; }
}

关于C# 作为带有泛型但不相关 <T> 的类型的运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60561519/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com