在Scala中,可以使用泛型运算符(如+和 - )在泛型类型参数上定义方差.例如,List类型在标准库中是协变的.
class List[+A]
Run Code Online (Sandbox Code Playgroud)
因此,具有协变列表的函数可以像这样定义:
def foo[A](list : List[A])
Run Code Online (Sandbox Code Playgroud)
也可以使用通用边界模拟方差.所以我们也可以写这个
def foo[A](list : List[_:< A])
Run Code Online (Sandbox Code Playgroud)
当然这没有道理,因为list它已经是协变的.但是对于不协变的类型也可以采用相同的技巧.(像Stack).当然,也可以从协同的堆栈(聚合继承)创建新类型.
所以我的问题:
thx提前:)
我是TypeScript的新手,我正在玩各种语言功能.下面是我在许多在线课程中一直在研究的代码示例.
我有问题获得继承和重载以正常工作.在整个代码中,我使用了一辆基本型Auto汽车,以及一辆儿童级卡车.
我试图看看是否有可能将汽车作为卡车投入并访问专门的功能HonkHorn.此外,我正在尝试将卡车投回到Auto并访问WriteDetails的基本功能.
在这两种情况下,似乎对象都保持原始类型.所以typecast4.HonkHorn(); 生成运行时错误:未捕获TypeError:typecast4.HonkHorn不是函数.
尝试将Truck转换为Auto将始终导致调用WriteDetails的专用覆盖.转换代码一直位于示例的底部.
有人可以帮我理解为什么会这样吗?
提前致谢!
// defines the structure of auto options
interface IAutoOptions{
engine: Engine,
color: string,
price: number,
year: number
}
// extends autooptions with truck specific options
interface ITruckOptions extends IAutoOptions{
fourbyfour: boolean,
bedlength: string
}
// defines the structure of engines
interface IEngine {
enginetype: string;
horsepower: number;
hydraulicpump?: string
start(warmuptime: number, callback: () => void): void;
stop(): void;
}
// the engine class must implement the members as specified in the IEngine …Run Code Online (Sandbox Code Playgroud) 如果我必须在我的开发分支上关注文件:
# file.rb
class Code
def methodA
'aA1'
end
def methodB
'bB2'
end
end
Run Code Online (Sandbox Code Playgroud)
但在我的主分支上,我想将方法分成不同的文件:
# in file.rb
class Code
def methodA
'aA1'
end
end
# in extra.rb
class Code
def methodB
'bB2'
end
end
Run Code Online (Sandbox Code Playgroud)
我可以简单地在开发时创建文件,然后签出以掌握,重新定位并手动分离文件,但是是否可以进行设置以便当我对开发进行更改时它将被转移到文件的右侧"部分"在主人?
我想从XML文件中获取值但是我失败了.能帮我指出问题吗?因为我已经非常努力地测试和谷歌搜索,但我仍然无法发现问题.
XML:
<?xml version="1.0" encoding="utf-8" ?>
<Contacts>
- <Contact>
<ID>xxx</ID>
<AutoUpdateEnabled>false</AutoUpdateEnabled>
<LastChanged>2013-05-29T01:53:59.4470000Z</LastChanged>
- <Profiles>
- <Personal>
<FirstName>My First Name</FirstName>
<LastName>My Last Name</LastName>
<UniqueName>My Unique Name</UniqueName>
<SortName></SortName>
<DisplayName>My Display Name</DisplayName>
</Personal>
</Profiles>
- <Phones>
- <Phone>
<ID>3</ID>
<PhoneType>Mobile</PhoneType>
<Number>000-0000000</Number>
<IsIMEnabled>false</IsIMEnabled>
<IsDefault>false</IsDefault>
</Phone>
</Phones>
- <Locations>
- <Location>
<ID>2</ID>
<LocationType>Business</LocationType>
<CompanyName></CompanyName>
<IsDefault>false</IsDefault>
</Location>
</Locations>
</Contact>
- <Contact>
<ID>xxx</ID>
<AutoUpdateEnabled>false</AutoUpdateEnabled>
<LastChanged>2013-05-29T01:53:25.2670000Z</LastChanged>
- <Profiles>
- <Personal>
<FirstName>Person</FirstName>
<LastName>Two</LastName>
<UniqueName></UniqueName>
<SortName></SortName>
<DisplayName>Person Two</DisplayName>
</Personal>
</Profiles>
- <Emails>
- <Email>
<ID>1</ID>
<EmailType>Personal</EmailType>
<Address>MyTest@gmail.com</Address>
<IsIMEnabled>false</IsIMEnabled>
<IsDefault>true</IsDefault>
</Email> …Run Code Online (Sandbox Code Playgroud) 我当前的代码正在使用Array.ConvertAll,我需要迁移到net core 1.0.如何将其迁移到Net Core中.
我们可以使用foreach带有自定义转换代码的语句来处理转换吗?但我不知道该怎么做.
任何帮助表示赞赏.
有没有办法用 Entity Framework Core 填充字典属性?
出于性能原因,我们喜欢在应用程序而不是数据库中进行搜索。由于列表不能很好地扩展,我们喜欢使用字典。
例如(简化示例)
class Course
{
public Dictionary<string, Person> Persons { get; set; }
public int Id { get; set; }
}
class Person
{
public string Firstname { get; set; }
public string Lastname { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我尝试过的事情
System.InvalidOperationException:无法映射属性“Persons”,因为它属于“Dictionary”类型,它不是受支持的原始类型或有效的实体类型。显式映射此属性,或使用 '[NotMapped]' 属性或使用 'OnModelCreating' 中的 'EntityTypeBuilder.Ignore' 忽略它。
尝试添加价值转换(使用HasConversion),但转换仅适用于单个项目而不适用于集合。在HasMany已经提供了一个编译错误:
builder
.HasMany<Person>(c => c.Persons) //won't compile, Persons isn't a IEnumerable<Person>
.WithOne().HasForeignKey("PersonId");
Run Code Online (Sandbox Code Playgroud)创建一个自定义集合类(从继承Collection<T>和实施InsertItem,SetItem等等) -不幸的是,这也不会工作,因为EF核心将项目添加到集合和第一后,将填补特性(至少我们OwnsOne性质,即不在演示案例中) - …
c# dictionary entity-framework-core entity-framework-core-3.1
我犯了一个“小”错误,并向我的本地存储库添加了一个“小”(> 100MB)文件。
两次提交后,我尝试推送到 github 中的远程存储库,该存储库的限制为 100MB。
我可以使用 删除当前提交中的文件git rm --cached,但它仍在之前的提交中。
如何从所有提交中删除该文件?我已经尝试过这个关于 git filter-branch 的答案,但不适合我的。
我有一个Wpf .net 4.0 C#项目,我试图从使用Log4Net迁移到使用NLog作为Common.LoggingFaçade后面的日志库.我原本以为这是一件容易的事,但你知道他们说的是什么,没有什么比这更容易了.
我用过NuGet来:
在app.config文件中我有:
<common>
<logging>
<factoryAdapter type="Common.Logging.NLog.NLogLoggerFactoryAdapter, Common.Logging.NLog">
<arg key="configType" value="FILE" />
<arg key="configFile" value="~/NLog.config" />
</factoryAdapter>
</logging>
</common>
Run Code Online (Sandbox Code Playgroud)
......而且......
<dependentAssembly>
<assemblyIdentity name="NLog" publicKeyToken="5120e14c03d0593c" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-2.0.1.0" newVersion="2.0.1.0" />
</dependentAssembly>
Run Code Online (Sandbox Code Playgroud)
当我运行应用程序时,我收到一个错误说明
'在类型'NameSpace.Shell.AppBootstrapper'上调用与指定绑定约束匹配的构造函数引发了异常.行号'8'和行位置'18'.
内在的例外是:
{"无法加载一个或多个请求的类型.请检索LoaderExceptions属性以获取更多信息."}
说Loader异常,只有一个,是:
{"无法从程序集'NLog加载类型'NLog.TargetWithLayout',Version = 2.0.1.0,Culture = neutral,PublicKeyToken = 5120e14c03d0593c'.":"NLog.TargetWithLayout"}
有没有人克服这个问题或有解决方法NLog working with Common.Logging?
为了不发布长期问题,我没有包含该NLog.config文件,但我可以,如果这将是有益的.
我已经使用nuget将NLog添加到项目中并添加了NLog.config.我正在运行调试器并得到一个NullReferenceException由于事实LogManager.Configuration是null:
LogManager.Configuration.AddTarget("sentinel", sentinalTarget);
这行代码在静态构造函数中运行.
LogManager.ThrowExceptions是假的,所以我怀疑配置有问题NLog.config内容:
<?xml version="1.0" encoding="utf-8" ?>
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
autoReload="true"
throwExceptions="false">
<variable name="appName" value="YourAppName" />
<targets async="true">
<target xsi:type="File"
name="default"
layout="${longdate} - ${level:uppercase=true}: ${message}${onexception:${newline}EXCEPTION\: ${exception:format=ToString}}"
fileName="${specialfolder:ApplicationData}\${appName}\Debug.log"
keepFileOpen="false"
archiveFileName="${specialfolder:ApplicationData}\${appName}\Debug_${shortdate}.{##}.log"
archiveNumbering="Sequence"
archiveEvery="Day"
maxArchiveFiles="30"
/>
<target xsi:type="EventLog"
name="eventlog"
source="${appName}"
layout="${message}${newline}${exception:format=ToString}"/>
<target xsi:type="NLogViewer"
name="viewer"
address="udp://127.0.0.1:9999"/>
<target xsi:type="OutputDebugString" name="DbWin" layout="Log4JXmlEventLayout">
<layout xsi:type="Log4JXmlEventLayout" />
</target>
</targets>
<rules>
<logger name="*" writeTo="default" minlevel="Info" />
<logger name="*" writeTo="eventlog" minlevel="Error" />
<logger name="*" …Run Code Online (Sandbox Code Playgroud) 我使用NLog在我的操作中记录错误以存储包含其他信息的错误,例如:
using NLog;
private static Logger _logger = LogManager.GetCurrentClassLogger();
public virtual ActionResult Edit(Client client)
{
try
{
// FORCE ERROR
var x = 0;
x /= x;
return RedirectToAction(MVC.Client.Index());
}
catch (Exception e)
{
_logger.Error("[Error in ClientController.Edit - id: " + client.Id + " - Error: " + e.Message + "]");
}
}
Run Code Online (Sandbox Code Playgroud)
我在Web.config中配置了错误处理:
<customErrors mode="On" />
Run Code Online (Sandbox Code Playgroud)
但是当我执行Action(页面保留在同一个地方)时,我没有被重定向到Error.cshtml,为什么?
我可以用Elmah做同样的事情吗?(记录客户端ID等附加信息)
c# ×6
nlog ×3
git ×2
.net-core ×1
asp.net-mvc ×1
bounds ×1
dictionary ×1
elmah ×1
git-rm ×1
github ×1
inheritance ×1
scala ×1
selectnodes ×1
type-bounds ×1
typescript ×1
variance ×1
xml ×1