C# 从另一个项目重写方法
我的解决方案中有一个网站和一个数据类项目C# 从另一个项目重写方法,c#,asp.net,C#,Asp.net,我的解决方案中有一个网站和一个数据类项目 数据类被引用到网站 现在我想将方法a从数据类重写到网站 我认为这是可能的,因为编译后的数据类是网站中的dll 我的数据类: public partial class forInherit { public virtual int getUserID() { return 0; } } public partial class logFunctions : forInherit { } 和我的网站: public
数据类被引用到网站
现在我想将方法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()
{
}
}
但我的错误是
如果部分类定义的命名空间相同且在同一程序集中定义,则找不到合适的方法来重写部分类定义。
在您的情况下,这两个标准都不满足 如果我正确理解了您的意图,那么您希望让数据类的使用者能够在仍然使用数据类项目中的类
logFunctions
的同时更改getUserID()
方法的行为
您可以通过几种方法来实现这一点,其中一种非常简单的方法是为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();
}
}
网站中的
logFunction
类需要继承数据类项目中的forInherit
类
虽然您的
logFunction
类都是partial
类,但它们都在不同的项目中,可能还有名称空间(您没有指定)。因此,它们都只按名称相关,而不按编译器相关 Partial用于在源文件之间拆分,而不是在项目之间拆分。我希望在我的网站中为我的数据类使用一个属性值。实际上,我无法在我的数据类中访问此属性。因此,我希望在网站中重写它以返回属性值
logFunctionsInstance.GetUserIDDelegate = () => { return 1; };