重写另一个项目中的方法
本文关键字:方法 项目 另一个 重写 | 更新日期: 2023-09-27 18:31:49
我的解决方案中有一个网站和一个数据类项目
数据类引用到网站
现在我想将方法 A 从数据类覆盖到网站
我认为这是可能的,因为编译后数据类是网站中的DLL
我的数据类 :
public partial class forInherit
{
public virtual int getUserID()
{
return 0;
}
}
public partial class logFunctions : forInherit
{
}
和我的网站:
public partial class logFunctions
{
public override int getUserID()
{
}
}
但我的错误是
找不到合适的方法来覆盖
仅当分部类定义的命名空间相同并且它们在同一程序集中定义时,分部类定义才定义相同的类。
在您的案例中,这两个条件都不满足。
如果我正确理解您的意图,您希望为数据类的使用者提供更改getUserID()
方法行为的可能性,同时仍使用数据类项目中的类logFunctions
。
您可以通过多种方式实现此目的,一种非常简单的方法是为logFunctions
提供一个在调用getUserID()
时调用的委托。另一种可能性是引入传递给logFunctions
的接口。
第一个选项的示例:
在数据项目中:
public class forInherit
{
public virtual int getUserID()
{
return 0;
}
}
public class logFunctions : forInherit
{
public Func<int> GetUserIDDelegate { get; set; }
public override int getUserID()
{
if(GetUserIDDelegate == null)
return 0;
return GetUserIDDelegate();
}
}
在您的 Web 项目中:
logFunctionsInstance.GetUserIDDelegate = () => { return 1; };
网站
中的logFunction
类需要继承数据类项目中的forInherit
类。
虽然您的两个logFunction
类都是partial
但它们位于不同的项目中,并且可能位于命名空间中(您未指定)。因此,两者仅通过名称而不是编译器相关。