如果我在基类上实现一个接口,它将由它的子类继承,我知道函数/过程将是,但我更感兴趣的是我是否能够将子类强制转换为接口然后返回到它原班.
我希望我能做的是将不同基类的对象传递给一个函数,然后在函数确定中输入并根据需要使用它们.
这是可能的,这是正确的方法吗?
更新
为了帮助消除任何混乱(或创造更多),我想做的事情(条纹下到核心).
接口
IMyInterFace = interface
['{B7203E50-F5CB-4755-9DB1-FB41B7B192C5}']
function MyFunction: Boolean;
end;
Run Code Online (Sandbox Code Playgroud)
基类
type TMyObject = class(TInterfacedObject,IMyInterFace)
Run Code Online (Sandbox Code Playgroud)
子类
type TSubMyObject = class(TMyObject)
Run Code Online (Sandbox Code Playgroud)
另一类
type TMyOtherObject = class(TInterfacedObject,IMyInterFace)
Run Code Online (Sandbox Code Playgroud)
然后用法
procedure foo();
var obj:TSubMyObject;
begin
obj := TSubMyObject.Create();
SendInterfaceObject(obj);
end;
procedure bar();
var obj:TMyOtherObject;
begin
obj := TMyOtherObject.Create();
SendInterfaceObject(obj);
end;
procedure SendInterfaceObject(iobj:IMyInterFace);
begin
if (iobj is TSubMyObject) then
begin
//code here
end
else if (iobj is TMyOtherObject) then
begin
//code here
end;
end;
Run Code Online (Sandbox Code Playgroud)
更新2
我更新了代码abit,以便更好地展示我的意思.
//这里的代码部分与传递给它的对象几乎没有关系,例如,如果这个类是TAccounts并且它被传递了一个TEmployee对象,那么它可以支付每周付费,但是如果它是TInvoice那么它会检查到看看是否需要支付,只在日期是死线前2天支付.
TEmployee/TInvoice甚至可能来自要求付款的外派. …
我能理解cmd但不能理解cmd /c.我试图从我使用的当前调用java程序Runtime.getRuntime().exec("cmd /C java helloworld");出现我怀疑.
我读到某处配置数据存储在用户帐户 - >本地设置 - >应用程序数据下,但无法找到dll,exes和资源文件的位置.
我知道ClickOnce使用应用程序商店和数据目录来存储其应用程序数据,但客户端是否可以访问这些数据?他们可以浏览吗?
我正在编写一个tcp/ip客户端,我需要一个"测试服务器"才能轻松测试.它应该监听一个可配置的端口,在客户端连接时显示我以及客户端发送的内容,允许我手动输入要发送给客户端的文本.它应该适用于Windows.
通常我会使用简单但功能强大的nc.exe(别名"Netcat"在Unix上也可以在Windows上使用)但是防病毒软件将其检测为"黑客工具",以便我的系统管理员不要让我使用它工作中.
有没有人使用其他工具来测试套接字连接并对它感到满意?
我在Excel中有两列,如下所示:
A B
0.5 0.4
0.6 0.59
0.1 0.2
0.3 0.29
Run Code Online (Sandbox Code Playgroud)
我想计算B中有多少值小于A中的相应值.在这种情况下,答案是3.
我可以通过添加一个额外的列B-A然后执行此操作COUNTIF(RANGE, "<0"),但我想知道是否有办法在不添加额外列的情况下执行此操作.
我意识到这是在人们可能会考虑编程的边缘,但希望它只是在线的右侧,而不是错误的一面.
我不是控件的子类.尝试通过Control.Size = Control.Size失败触发事件,因为即使新的大小实际上不同,它也不会触发.
我和VS 2005和VS 2008并排安装.有趣的是,我可以在VS 2005下使用开发服务器.但是当我在VS 2008中尝试时,它给了我一个错误"无法连接到ASP.NET开发服务器".
任何的想法?
谢谢!
我需要最简单的编辑器,支持utf-8来编辑windows中的xml文件; 像wordpad这样的东西是完美的.这是一个非程序员,编辑现有的文件(到目前为止他使用的是wordpad,但现在我用utf-8编码翻译了很多意大利口音的文件显然是不可读的).有什么建议吗?
谢谢,这真的会帮助我
问候
尼古拉
我正在使用log4net将写入日志消息记录到滚动日志文件中.
现在我还将所有跟踪消息重定向System.Diagnostics.Trace到该日志文件.我该如何配置?我试图在log4net文档中找到有关它的任何内容,但没有成功.有可能吗?
我想这样做的原因是因为我对第三方库的Trace消息感兴趣.
<log4net>
<appender name="R1" type="log4net.Appender.RollingFileAppender">
<file value="C:\Logs\MyService.log" />
<appendToFile value="true" />
<rollingStyle value="Date" />
<maxSizeRollBackups value="10" />
<datePattern value="yyyyMMdd" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
</layout>
</appender>
</log4net>
Run Code Online (Sandbox Code Playgroud)