每当我读到RE这个问题或静态继承的类似主题时,回复通常都是不支持的(我们知道),原因是因为这是一个糟糕的设计并且可能有更好的方法做到这一点.我很想找到一个更好的方法,所以我愿意接受所有的建议 - 这就是我想做的事情.
我有一个没有实例数据的类.所有方法都是静态的.我们称之为class BaseStatic.我现在想要一个新的静态类(当然好几个但是坚持一个)继承自这个静态类并添加一些新的静态方法,让我们调用它SubStatic.
我希望消费者能够写的是:
SubStatic.MethodFromSub();
Run Code Online (Sandbox Code Playgroud)
并且
SubStatic.MethodFromBase();
Run Code Online (Sandbox Code Playgroud)
我知道我也可以写:
BaseStatic.MethodFromBase()
Run Code Online (Sandbox Code Playgroud)
显式,但消费者必须知道哪个类实现了哪些方法.我不能用继承来做这个,因为我不能从另一个继承一个静态类.那么有什么更好的方法呢?
现在,我知道我能有这些类的实例类,我可以定义的所有方法静态 - 这会给我我上面描述,但会导致其他问题,即行为:
当我这样做:SubStatic.MethodFromBase()在SubStatic不调用静态构造函数,因为该方法在父类的静态运行(父的静态构造函数被调用)
如果静态父方法之一,需要调用该子类可以覆盖另一种方法,我需要在子类中的虚拟静态方法.我知道我不能拥有.
显然糟糕的设计 - 任何人都可以帮我重做吗?我知道我可以使用实例继承并正确使用虚方法(我已经让它以这种方式工作)但客户端代码总是必须创建一个实例(或者我想一些单例).
从这里的类似问题我已经在这里读到AutoMapper以前区分大小写,但现在不区分大小写.我希望它区分大小写 - 看不到任何改变这个的方法,也没有其他问题.这显示了如何做到这一点(我确实看过).任何人的想法?
谢谢
我需要在WCF服务上进行自定义绑定,以允许我将原始内容传递给WCFRest服务.效果很好,但我不能让它接受传输级别的安全性.我想在其他地方使用https和basicauthentication.端点看起来像这样:
<endpoint address="" behaviorConfiguration="web" contract="SmsService.ISmsReceive" binding="customBinding" bindingConfiguration="RawReceiveCapable"></endpoint>
Run Code Online (Sandbox Code Playgroud)
customBinding看起来像这样:
<customBinding>
<binding name="RawReceiveCapable">
<security mode="Transport">
<transport clientCredentialType="Basic"/>
</security>
<webMessageEncoding webContentTypeMapperType="SmsService.RawContentTypeMapper, SmsService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
<httpTransport manualAddressing="true" maxReceivedMessageSize="524288000" transferMode="Streamed" />
</binding>
</customBinding>
Run Code Online (Sandbox Code Playgroud)
但是系统抱怨安全节点中不允许使用mode属性.没有安全节点,一切都很好,但它不是https.
谢谢
射线
.net ×1
automapper ×1
c# ×1
https ×1
inheritance ×1
static ×1
transport ×1
virtual ×1
wcf ×1
wcf-binding ×1